0

「exportJAVA_HOME=.....」のようなコマンドを実行するシェルスクリプトを書きたいのですが、どうすればスクリプトを書くことができますか?

私は試してみます:

#!/bin/sh
echo "test"

export PATH=$JAVA_HOME/bin:$PATH
export AWS_AUTO_SCALING_HOME=/usr/local/CLI
export PATH=$PATH:$AWS_AUTO_SCALING_HOME/bin
export AWS_CREDENTIAL_FILE=/usr/local/CLI/credential-file-path.template

ただし、コマンドは実行されません。

4

3 に答える 3

4

ただし、コマンドは実行されません。

それらは実行されますが、サブシェルにあります。親シェルはこれらの値を継承しません。

スクリプトを実行する代わりに、次のsourceようにします。

source /path/to/myscript.sh

または

. /path/to/myscript.sh

さらに読む: bashスクリプトを実行することとbashスクリプトを調達することの違いは何ですか?

于 2013-03-04T03:29:45.933 に答える
4

スクリプトをどのように実行していますか?使用する場合:

$ script.sh

スクリプトの実行中は環境が設定されますが、親シェルはこれによる影響をまったく受けません(UnixはDOSではありません!)。

コマンドの結果をシェルに取り込むには、次を使用します。

$ . script.sh

またはBashで使用できます:

$ source script.sh

.(これは、Bourneシェル以降のシェルに含まれている(dot)コマンドの同義語です。sourceコマンドは最初にCシェルにあり、次にBashに追加されました。)

これらは、スクリプトを現在のプロセスに読み込みます。環境変数の設定は、現在のプロセスに影響します。. $HOME/.profileたとえば、プロファイルを使用して効果的に読み取ることができます。

点線のコマンドのファイルは$PATHのディレクトリで検索されますが、ファイルは読み取り可能である必要があり、実行可能である必要はありません。

于 2013-03-04T03:30:50.067 に答える
-1

ファイルを実行する権限を設定してみましたか?

chmod+xファイル名

于 2013-03-04T03:30:32.163 に答える