調達は手動で機能しますが、スクリプトで実行すると失敗します。

調達は手動で機能しますが、スクリプトで実行すると失敗します。

次のように使用してくださいcurl

bash <(curl -s https://raw.githubusercontent.com/user/repo/master/script.sh | tr -d '\r')

いくつかのリモートスクリプトを実行しました。

リモートスクリプトには2つの側面があります。

1)注文する:

wget -P ~/myAddons/ https://raw.githubusercontent.com/user/repo/master/appendix.sh

2)1つのsource ~/myAddons/appendix.shコマンド:

このファイルにはappendix.shいくつかの Bash エイリアスが含まれています。


質問

リモートスクリプトを実行した後appendix.sh

エイリアスは手動で実行した後にのみ機能しますsource ~/myAddons/appendix.sh

  • sourceリモートスクリプトの命令と手動命令が同じであることを3回以上確認しました。

質問

リモートスクリプトから直接実行するとsource ~/myAddons/appendix.sh失敗しますが、手動で実行すると機能するのはなぜですか。この問題を解決する正しい方法は何ですか?

答え1

新しいシェルを起動し、bash <(...)その中で購入します。これは実行中の元のシェルには影響しませんbash <(...)。代わりにsourceプロセス置換を使用する必要があります。

source <(...)
# or
. <(...)

関連情報