すべての変数名とそれらの現在の値をリストする方法は?
$HOME
、$PWD
などだけでなく、ユーザーが定義した他のものも含めます。
bashの場合:(Ubuntuの標準シェル)
ターミナルで次のコマンドを入力して、すべての環境変数を印刷します。
printenv
このコマンドの詳細については、 printenv
manページ を参照してください。
「シェル変数」を含むリストを表示するには、次のコマンドを入力できます。
( set -o posix ; set ) | less
これにより、シェル変数だけでなく環境変数も表示されます。
このトピックに関連する詳細については、次を参照してください。
zshの場合:(高度なシェル)
次のコマンドを使用します。
( setopt posixbuiltin; set; ) | less
ZSHオプションの詳細については、 zshoptions
manページ を参照してください。
私はこの質問がかなり古くて答えられていることを知っていますが、少し役に立つ情報を追加できると思います。
上記のすべての方法で、推奨される手順は次のとおりです。
env
、またはprintenv
などを使用して環境変数を表示しますこれらのソリューションの問題は、環境変数端末に実行されているシェルのが表示されていることです。たとえば、グラフィックインターフェイスによって直接実行されるアプリケーションで使用可能な環境変数は表示されません。
これは、たとえば、~/.profile
、または.bashrc
、または.zshenv
(シェルに応じて)を使用して環境変数を変更する場合に顕著です-従来のディレクトリの追加のようにパスに。
グラフィック環境で直接起動されたアプリケーションで使用可能な環境変数を確認するには、次の操作を実行できます(Gnomeシェルでは、他のすべてのDEに同等のメソッドがあると確信しています)。
xterm -e bash --noprofile --norc
を実行します(または、xterm
、gnome-terminal -- bash --noprofile --norc
がない場合--- @Mike Nakisのコメントに感謝します)。
これで、環境変数を追加しなかったシェルを備えた端末ができました。ここでenv
を使用して、すべての環境変数をリストできます。
明らかに、新しいシェルにはシステムファイルによって環境変数が追加されますが、その変数は(継承によって)システム内のすべてのプログラムで利用できるはずです。
.pam_environment
ファイルを確認して、このトリックをもう一度検索する必要があるのは4回目なので、これを投稿しています。だから今、私はそれをより速く見つけるでしょう(そしてその過程で、私は他の誰かを助けることを望みます...)
declare
ビルトインですべての変数を見ることができます。
declare -p
環境変数のみに関心がある場合は、使用します
declare -xp
help declare
を実行して、他のオプションを確認します。
ターミナルの環境変数をリストするには CTRL+ALT+T env
コマンドを使用できます。
例えば :
[raja@localhost ~]$ env
XDG_VTNR=1
SSH_AGENT_PID=3671
XDG_SESSION_ID=3
HOSTNAME=localhost.localdomain
IMSETTINGS_INTEGRATE_DESKTOP=yes
GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1
GLADE_PIXMAP_PATH=:
TERM=xterm-256color
Shell=/bin/bash
XDG_MENU_PREFIX=xfce-
DESKTOP_STARTUP_ID=
HISTSIZE=1000
XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201
WINDOWID=65011716
GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2
IMSETTINGS_MODULE=none
QT_GRAPHICSSYSTEM_CHECKED=1
USER=raja
等.
それが役立つことを願っています。
Compgenを使用したbashの場合:
compgen -v | while read line; do echo $line=${!line};done
envは POSIX 7の方法 :
export asdf=qwer
env | grep asdf
サンプル出力:
asdf=qwer
エクスポートされた変数のみが表示されます。エクスポートされていない変数は、通常「環境変数」とは見なされません。
POSIXではないprintenv
よりもそれを優先します。どちらも引数なしで同じことをするようです: https://unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv
ここでのほとんどのソリューションは、環境変数のみを印刷するか、envまたは(set -o posix; posix)が解析可能な形式で値を印刷しないという欠点があります(変数A = $ 'a\r\nb' ...を印刷してみてください) 。
POSIXエスケープ形式で、すべての変数を1行に1変数ずつ出力する関数を次に示します。
function dump_vars {
local VARNAME
compgen -v | while read -r VARNAME; do
printf "$VARNAME=%q\n" "${!VARNAME}"
done
}
Compgen -vの使用を指摘してくれた@tmgoblinに感謝します。
すべてをprintenv
で印刷するのではなく、特定の環境変数が必要な場合は、たとえばecho "$PWD"
を実行して印刷できます。
printenvはエクスポートされた変数のみをリストします。 command+alt+$ ( "\ e $":complete-variable)は、すべての変数をリストします。