我有一个bash脚本,用于从当前位置的任何位置从源文件移动到bin目录(我将此脚本称为'teleport')。由于它基本上只是一个荣耀的'cd'命令,我必须在当前shell(即./teleport.sh)中运行它。我在.bashrc文件中设置了一个别名,以便'teleport'匹配'。 teleport.sh”。无法在当前环境中多次运行BASH脚本
我第一次运行它,它工作正常。但是,如果我在运行一次后再运行它,它什么都不会做。如果我关闭我的终端,然后再打开一个新终端,但只有第一次,它会再次运行。我的直觉是,BASH内部有一些我不熟悉的东西,所以我想我会通过这里的专家来看看我能否得到答案。
的脚本是:
numargs=$#
function printUsage
{
echo -e "Usage: $0 [-o | -s] <PROJECT>\n"
echo -e "\tMagically teleports you into the main source directory of a project.\n"
echo -e "\t PROJECT: The current project you wish to teleport into."
echo -e "\t -o: Teleport into the objdir.\n"
echo -e "\t -s: Teleport into the source dir.\n"
}
if [ $numargs -lt 2 ]
then
printUsage
fi
function teleportToObj
{
OBJDIR=${HOME}/Source/${PROJECT}/obj
cd ${OBJDIR}
}
function teleportToSrc
{
cd ${HOME}/Source/${PROJECT}/src
}
while getopts "o:s:" opt
do
case $opt in
o)
PROJECT=$OPTARG
teleportToObj
;;
s)
PROJECT=$OPTARG
teleportToSrc
;;
esac
done
我对它的用法是一样的东西:
[email protected]:~$ cd /usr/local/src
[email protected]:/usr/local/src$ . ./teleport -s some-proj
[email protected]:~/Source/some-proj/src$ teleport -o some-proj
[email protected]:~/Source/some-proj/src$
<... START NEW TERMINAL ...>
[email protected]:~$ . ./teleport -o some-proj
[email protected]:~/Source/some-proj/obj$
完美工作,谢谢Rob! – jwir3