この質問に答えると、bash
との動作に非常に面白い(そして微妙な)違いがあることがわかりましたzsh
。
で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
ご覧のとおり、エイリアスの実行はx
サブシェルで実行されるため、現在のディレクトリは変更されません。
にない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
コマンドのように読まれているように見えるが、私は意味します---
(cd /tmp && echo A) &
内bash
と
cd /tmp && (echo A &)
の中でzsh
。これは正しいですか、それとも別の動作の原因は別のものですか?