Bashシェルプロセスを起動するときに、起動ファイルで指定されたものに加えて、デフォルトの環境変数は何ですか?
特定のbashまたはsh組み込み変数(リストは「Bourne シェル変数」そして「バッシュ変数」セクション)はデフォルトの環境変数ですが、他のbashまたはshの組み込み変数はそうではありませんか?どのタイプのbashまたはsh組み込み変数がデフォルトの環境変数ですか?
存在する環境変数のPOSIX定義Bashに組み込まれた変数のすべてまたはほとんどは、基本的に環境変数のようですが、わかりません。
答え1
一般的にプロセス継承する親プロセスの環境変数です。プログラム(例:シェル)が他に同意しない限り、「デフォルト」環境変数はありません。
気になる場合は、コマンドを使用してenv -i
環境を消去して使用してprintenv
環境を表示できます。いくつかの例:
$ env -i printenv
$ env -i sh -c printenv
PWD=/home/peter
SHLVL=1
_=/usr/bin/printenv
$ echo printenv | env -i sh
PWD=/home/peter
SHLVL=1
_=/usr/bin/printenv
$ env -i sh --login -c printenv
...all kinds of variables from login scripts...
LANG=en_US.UTF-8
PWD=/home/peter
SHLVL=1
PATH=/usr/local/bin:/usr/bin:...
LESSOPEN=|/usr/bin/lesspipe.sh %s
_=/usr/bin/env
bash(1) マニュアルにはこれらの変数のいくつかが記載されていますが、残念ながらこれらの変数が存在するかどうかについて明確な答えは提供しません。環境変数は常に設定または設定されません。
Bashの他の変数も同様の方法で見つけることができます。
$ env -i -c set
BASH=/usr/bin/sh
...
BASH_VERSION='4.4.5(1)-release'
...
SHLVL=1
TERM=dumb
UID=1000
_=sh
これらの変数のいずれかに依存する必要がある場合は、次の点を確認することをお勧めします。バッシュマニュアル。特に:
さて、bashシェルが開いているとしましょう。特定の変数がサブシェルで利用可能かどうかを知りたいです。これを行うには、declare -p NAME...
組み込み関数を使用して「各NAMEの属性と値を表示できます。例:
$ declare -p PWD
declare -x PWD="/home/peter"
$ declare -p foo
bash: declare: foo: not found
$ foo=bar
$ declare -p foo
declare -- foo="bar"
この-x
プロパティは変数を次のように表示します。出口これは、子プロセスがこの変数を見ることができることを意味します。既存の変数でこれを行うには、export
組み込み関数を使用できます。
$ export foo
$ declare -p foo
declare -x foo="bar"
Bashでは、変数を設定し、それを子プロセスで使用可能にすることを組み合わせることができます。
$ export foo=bar