我有一個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