どうしたの?

どうしたの?

bashスクリプトで変数を作成し、端末が閉じられるまで(永続的ではない)、その変数を端末に保持しようとしています。exportこれは私に必要なものだと思いましたが、うまくいきません。

#!/bin/bash

export VARIABLE='this is a test'

次にスクリプトを実行します。

$ ./test.sh

その後、同じ端末で:

$ echo "$VARIABLE"

しかし、それは空の応答を生成します。

答え1

どうしたの?

新しいプロセスを開始し(プロセス内)、環境変数を設定してプロセスを終了します。変数が消えます。

何をすべきか

Bashスクリプトをインポートして実行しないでください。たとえば、次のいずれか

source ./test.sh 
. ./test.sh

答え2

スクリプトの実行時に変数を設定するサブシェルを生成します。スクリプトの実行が終了すると、変数は削除されます。現在のシェルで使用するには、次のようにスクリプトを実行します。

. ./test.sh

答え3

source(または)に加えて、.シェル機能を使用することもできます。

この試み:

test_sh() {
  export VARIABLE='this is a test'
  ...
}

テスト:

printf "VARIABLE=%s\n" "${VARIABLE}"
VARIABLE=

test_sh
printf "VARIABLE=%s\n" "${VARIABLE}
VARIABLE=this is a test

関連情報