私はstartx
。その前には次がPS1
ありました。
$ cat /proc/self/environ | tr '\0' '\n' | egrep '^PS'
PS1=[\u@\H \w]
PS3=>
PS2=>
PS4=+
それからX
私は以下を得る:
$ cat /proc/self/environ | tr '\0' '\n' | egrep '^PS'
PS3=>
PS4=+
私はチェックGNOME
インしましたawesome
。これが予想される動作ですか?私ができることはありますか?
答え1
いいえ、Xは環境変数を破壊しません。ただし、bashは特に非対話型シェルで設定を解除しますPS1
。PS2
$ PS1='my PS1' PS2='my PS2' PS3='my PS3' PS4='my PS4' bash -c export |grep PS
declare -x PS3="my PS3"
declare -x PS4="my PS4"
Bashはおそらくログインシーケンスの一部としてどこかで実行されます。あなた/bin/sh
がbashであり、それが一般的であれば、そうでない場合でもこれは保証されます。
プロンプトは対話型シェルでのみ意味のあるシェル設定なので、環境にエクスポートする必要はありません。これをシェルの対話型初期化ファイルの一部に設定します.bashrc
。
答え2
私はあなたがbash
シェルで実行されていると仮定します。他のものを実行する場合、詳細は異なりますが、アプローチはほぼ同じままです。ログインシェルを確認するには、次のコマンドを実行します。getent passwd "${USER:-$(id -nu)}" | awk -F: '{print $NF}'
.profile
あなたのプロンプトがまたはで定義されていて、.bash_profile
端末にログインしたとき(一度)設定されているようです。端末を呼び出してstartx
開くと、これがログインセッションではないことを「知って」呼び出します.bashrc
。
次のコマンドを使用してこれを確認し、その結果を質問に引用することができます。grep '\<PS.*=' .profile .bash_profile .bashrc
私の提案は、ログインシェルを強制するようにGUIターミナルアプリケーションを設定することです(これらのオプションがインストールに存在すると仮定します)。
.profile
または、ファイルを確認し、.bash_profile
ワンタイム.bashrc
スタートコード(例:)を新しいファイルに移動し、新しいファイル.bash_once
のすべてのインスタンスに対して繰り返す必要があるコード(例:)を移動します。その後、空または適切に開始できます。bash
.bash_everytime
source .bash_once
source .bash_everytime
.profile
.bash_profile
.bashrc