
変数の宣言方法や操作方法など、基礎を学んでいるところです。名前を付けたすべての変数のリストを表示する簡単な方法はありますか? (検索して見つけたものはすべて環境変数についてのみ説明されており、それが私が探しているものかもしれませんが、おそらくそうではないでしょう)
答え1
実行するとdeclare
、すべての環境変数のリストが表示されます。現在のシェルで-p
自分で定義したものも含みます。また、関数をスキップするオプションを使用しない限り、関数も含まれますが、余分なノイズが追加されます。
答え2
変数には、プライベートとエクスポートの 2 種類があります (実際にはそれ以上ありますが、このコンテキストでは 2 つだけです)。
プライベート変数は、シェル (またはスクリプト) 内では使用できますが、シェル (またはスクリプト) によって起動されたプログラムでは使用できません。、、またはを
使用して、エクスポートされた変数を含むすべての変数のリストを取得できます。bash では、これら 3 つはすべて同じことを行います。declare
typeset
set
エクスポートされた変数は、シェルまたはシェルによって起動されたプログラムの両方で使用できます。
を使用して、エクスポートされた変数のリストを取得できますenv
。
次のようなことを行うときに注意すべき重要な点が 1 つあります。
FOO="bar"
echo "$FOO"
$FOO
はプライベート/非エクスポート変数です。シェルは実際には に渡す前に$FOO
に展開します。そのため、は実際には として呼び出されます。bar
echo
echo
echo "bar"
export FOO
、またはを実行することで変数をエクスポートできますexport FOO="bar"
。
さらに、コマンドの先頭に変数を追加することで、プログラムへの1回の呼び出しのみの変数をエクスポートすることもできます。たとえば、
FOO="bar" cmd1
cmd2
cmd1
アクセスできる$FOO
が、cmd2
アクセスできない。