X mangleは環境変数を求めるメッセージを表示しますか?

X mangleは環境変数を求めるメッセージを表示しますか?

私は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は特に非対話型シェルで設定を解除しますPS1PS2

$ 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_everytimesource .bash_oncesource .bash_everytime.profile.bash_profile.bashrc

関連情報