ソースコマンドがシェルスクリプトでは機能しません

ソースコマンドがシェルスクリプトでは機能しません

私はスクリプト言語に初めて触れました。

source ~/.custom_rcシェルスクリプトでコマンドを実行する必要があります。シェルスクリプトを実行してもエラーは表示されません。それは非常にうまく動作します。

これは私のinstall.shファイルです。

#!/usr/bin/env bash
#
# Some Comments
#
# End of Comments

echo ""
.
.
.
.
.
.
source ~/.custom_rc

echo "End Of Script..."

カールを使用してスクリプトを実行していますsh -c

sh -c "$(curl -fsSL https://some.link/to/install.sh)"

スクリプト内でコマンドが実行されないのはなぜですか?シェルスクリプト内でどのように実行するのですか?

編集#1:

ファイルでaliasコマンドを使用します.custom_rc

実行後はaliasコマンドを使用できません。

ただし、手動で実行すると、source ~/.custom_rcaliasコマンドは正しく機能します。

答え1

わかりました…何が起こったのか理解しています。次に定義したエイリアスを使用するには.custom_rc 後ろに shsh実行すると、エイリアスがセッション内に設定されるため、機能しません。sh完了したら、彼らは死ぬでしょう。つまり、実行時にエイリアスを使用できる必要がありsourceますinstall.sh

この問題を処理する他のスクリプトの助けが必要です。

ラッパー.sh:

curl https://some.link/to/install.sh # download the script so you can source it
. install.sh # source it

(あるいは同様のもの)

これで実行でき. wrapper.sh、機能します(どのようにして得られたかを参照してください)。

修正する

うまくいかないというコメント:

$ cat script1.sh 
alias alias1="echo hola"

. script2.sh

$ cat script2.sh 
alias alias2="echo adios"

$ ./script1.sh 
$ alias1
bash: alias1: command not found
$ alias2
bash: alias2: command not found
$ . script1.sh 
$ alias1
hola
$ alias2
adios

関連情報