web-dev-qa-db-ja.com

bashスクリプトを実行してもzshでエイリアスコマンドが機能しない

私はcentosでzshを使用しています。そして、シェルスクリプトを実行したいと思います。このような。

script.sh

#!/bin/sh

# something ..

source ./aliases-file.sh

aliases-file.sh

alias test=ls
alias test2=cat

走る ./script.sh、エイリアスは現在のセッションに適用されていません。どうすればこれを実行できますか?

3
Junsu Kim

script.shを実行すると、サブシェルで実行され、エイリアスは呼び出し元のシェル(または参照している現在のセッション)まで伝播されません。 script.sh自体を調達する必要があります:source script.sh。これにより、コマンドが現在のシェルで実行され、エイリアスが表示されるようになります。

補足:移植性の理由から、前者はPOSIX標準であり、後者はbashismであるため、sourceの代わりに.を使用することを検討する必要があります。

5
B Layer