私はスクリプト言語に初めて触れました。
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_rc
aliasコマンドは正しく機能します。
答え1
わかりました…何が起こったのか理解しています。次に定義したエイリアスを使用するには.custom_rc
後ろに sh
sh
実行すると、エイリアスがセッション内に設定されるため、機能しません。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