回答:
export
シェルで起動する他のプログラムから「見える」変数だけが必要で、シェル自体の内部でのみ使用されるものはexport
編集する必要はありません。
これはマニュアルページに書かれていることです:
The supplied names are marked for automatic export to the environ‐
ment of subsequently executed commands. If the -f option is given,
the names refer to functions. If no names are given, or if the -p
option is supplied, a list of all names that are exported in this
shell is printed. The -n option causes the export property to be
removed from each name. If a variable name is followed by =word,
the value of the variable is set to word. export returns an exit
status of 0 unless an invalid option is encountered, one of the
names is not a valid shell variable name, or -f is supplied with a
name that is not a function.
これは、次の方法で実証できます。
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
説明:
${MYVAR}
、でシェル変数に設定しましたMYVAR="value"
。echo
エコーはシェルの一部であるため、Iを使用するとその値をエコーできます。echo.sh
。これは基本的に同じことを行う小さなスクリプトです${MYVAR}
が、エコーするだけですが、違いは、別のスクリプトであるため、異なるプロセスで実行されることです。echo.sh
新しいプロセスは継承しないため、呼び出すと何も出力されません${MYVAR}
${MYVAR}
、export
キーワードを使用して環境にエクスポートしますecho.sh
もう一度実行すると${MYVAR}
、環境から取得されるため、コンテンツがエコーされますあなたの質問に答えるために:
変数をエクスポートする必要があるかどうかにかかわらず、変数が使用される場所によって異なります。
環境変数に使用export
します。環境変数は、オペレーティングシステムの機能です。環境変数は子プロセスに継承されます。シェルで環境変数を設定すると、このシェルで起動されたすべてのプログラムで使用できます。多くのアプリケーションまたはシェル以外の特定のアプリケーションで使用される変数は、環境変数です。一般的な環境変数の例を次に示します。
HOME
—ユーザーごとの設定ファイルが保存されているユーザーのホームディレクトリを示します。ユーザーごとの構成ファイルを読み取るか、ユーザーのホームディレクトリの場所を知る必要があるプログラムで使用されます。PATH
—他のプログラムを起動するための実行可能ファイルの場所を示します。別のプログラムを開始する必要があるすべてのプログラムで使用されます。LD_LIBRARY_PATH
—動的ライブラリファイルの場所を示します。動的にリンクされたすべての実行可能ファイルで使用されます。EDITOR
、VISUAL
—エディターが必要なときに実行するプログラムを示します。テキストエディタを起動する必要があるプログラムで使用されます。DISPLAY
、XAUTHORITY
— X11サーバーへの接続方法を示します。X11クライアント(GUIプログラムなど)によって使用されます。LESS
— less
実行時にオプションが自動的にオンになります。によって使用されless
ます。http_proxy
—使用するWebプロキシを示します。ほとんどのWebブラウザーで使用されます。export
シェル変数には使用しないでください。シェル変数は、プログラミング言語としてのシェルの機能です。シェル変数は、設定されているシェル内でのみ使用されます。シェルによって起動されるプログラムには意味がありません。シェル変数は、他のシェル状態と同様に、サブシェルが作成されるときに複製されます。一般的なシェルに意味のあるシェル変数の例を次に示します。
PS1
—各コマンドの前に表示するプロンプト。IFS
—引用符で囲まれていない変数展開とコマンド置換で単語を区切る文字。HISTFILE
—シェルがコマンド履歴を書き込むファイル。シェルで使用される変数に加えて、ほとんどのシェルスクリプトは内部目的で変数を使用します。
ほとんどの環境変数(例PATH
:)はセッション全体で意味があり~/.profile
、同様のファイルに設定する必要があります。特定のシェルにのみ意味のある変数(などPS1
)は、~/.bashrc
またはなどのシェル固有のファイルに設定する必要があります~/.zshrc
。すべてのシェルが読み取る「.bashrc」に相当するファイルはありますか?を参照してください。