現在いる場所からソースディレクトリからbinディレクトリに移動するために使用するbashスクリプトがあります(このスクリプトを「テレポート」と呼びます)。基本的には単なる「cd」コマンドなので、現在のシェル(つまり、.. / teleport.sh)で実行する必要があります。'teleport'が'と一致するように.bashrcファイルにエイリアスを設定しました。teleport.sh'。
初めて実行したときは、正常に動作します。しかし、一度実行した後でもう一度実行すると、何も実行されません。ターミナルを閉じてから新しいターミナルを開くと、再び機能しますが、これは初めてです。私の直感では、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
私の使い方は次のようなものです。
sjohnson@corellia:~$ cd /usr/local/src
sjohnson@corellia:/usr/local/src$ . ./teleport -s some-proj
sjohnson@corellia:~/Source/some-proj/src$ teleport -o some-proj
sjohnson@corellia:~/Source/some-proj/src$
<... START NEW TERMINAL ...>
sjohnson@corellia:~$ . ./teleport -o some-proj
sjohnson@corellia:~/Source/some-proj/obj$