cd
がエイリアスの置換後に固執しないようにするには、(
yを指定したサブシェルを使用します)
。
alias my_x="(cd /home/path_to_x && ./x)&"
あなたはそれをチェックすることができます
alias test_y="(cd /tmp && sleep 10 ) & "
ソリューションに注意してください
alias my_y="/home/path_to_x/x"
完全に等価ではありません。実際、を介して呼び出された場合my_x
、x
プログラムは現在のディレクトリ/home/path_to_x/
で実行されmy_y
、によって呼び出された場合x
、コマンドmy_y
が発行された現在のディレクトリで実行されます。これは、何x
をしているのかによって、重要な場合とそうでない場合があります。
OPソリューションについては、次の場所で機能しbash
ます。
romano@RRyS:~$ pwd
/home/romano
romano@RRyS:~$ alias x="cd /bin && ./echo A >/dev/null &"
romano@RRyS:~$ x
[1] 16611
romano@RRyS:~$ pwd
/home/romano
ではないzsh
:
[romano:~] % pwd
/home/romano
[romano:~] % alias x="cd /bin && ./echo A >/dev/null &"
[romano:~] % x
[1] 16744
[1] + 16744 done ./echo A > /dev/null
1& [romano:/bin] % pwd
/bin
[romano:/bin] %
それはそのようで はbashと異なる方法でリストを実行zshのそれは私にそれを指し示すための明示的なかっこ...おかげ@EliahKaganを追加することをお勧めですので...。
alias x='/home/path_to_x/x'
ます。.
以前は使用しないでください/home
。.
(ドット)は現在のディレクトリを指します。