2017-01-30 3 views
2

我々はPS1の値を印刷するとき、それが設定されていますなぜenvでPS1変数が表示されないのですか?

$ echo $PS1 
[\[email protected]\h \W]\$ 

私たちは、環境変数を印刷するenvコマンドを使用することができます。変数PS1が表示されないのはなぜですか?

$ env | grep PS1 
# No output here 
+0

"set | grep PS1"コマンドを試す必要があります。 –

答えて

7

PS1は環境変数ではありません(通常は特定の場合)。

は、あなたがして一覧表示することができますbashのインスタンスに設定された多くの変数があります。

$ set 
BASH=/bin/bash 
BASHOPTS=checkwinsize:cmdhist:… 
BASH_ALIASES=() 
BASH_ARGC=() 
. 
. 
SHLVL=1 
SSH_AGENT_PID=853 
SSH_AUTH_SOCK=/tmp/ssh-Ofupc03xWIs7/agent.795 
TERM=xterm-256color 

をしかし、それらの多くは、環境変数ではありません。例:

$ echo "$PPID" 
1062 

$ env | grep PPID 

exportを使用して変数を環境に追加できます。

$ export PS1 
$ env | grep PS1 
PS1=\[email protected]\h:\w\$ 

、変数は(変数だけエクスポートされていないの値を保持します)宣言とその輸出フラグを削除することでアンエクスポートすることができます:だからPS1は、環境変数として設定することができ

$ declare +x PS1 
$ env | grep PS1 
$ echo $PS1 
\[email protected]\h:\w\$ 

またはより劇的、変数をINGのunsetによって:bashで

$ unset PS1 
$ env | grep PS1 

declare変数のフラグを印刷するために使用することができる:

$ declare -p PS1 
declare -- PS1="\${debian_chroot:+(\$debian_chroot)}\\[email protected]\\h:\\w\\\$ " 

$ export PS1 

$ declare -p PS1 
declare -x PS1="\${debian_chroot:+(\$debian_chroot)}\\[email protected]\\h:\\w\\\$ " 

エクスポート後に変数に-xが設定されていることに注意してください。

+0

私のシステムにはPS1.set | grep PS1 PS1 = '\ h:\ W \ u \ $'です。さらに、永続的に変数を環境に追加することもできます。 –

+0

@terencehillどういう意味ですか?あなたはPS1を変数として持っていますか?はい、このシステムにもあります。環境変数として?時にはそうかもしれません。 – sorontar

+0

私は、環境変数が、システムの起動時にロードされる単なる変数であることを意味します。 –

2

変数PS1がどこに設定されているかに応じて、ローカルまたは環境とみなすことができます(この環境を設定するにはpostを参照)。

ローカルの場合はのenvで印刷できません。しかし、コマンドに設定して印刷することができます。

+0

そして 'declare + x var'を使って変数を環境から削除することができます。 – sorontar

関連する問題