2つの端末がインストールされていgnome-terminal
ますxfce4-terminal
。
>
xfce端末は起動時に単純なプロンプトのみを表示したいと思います。プロンプトはgnome-terminal
同じままでなければなりません(したがってbashrc
修正がないと仮定します)。
xfce-terminal
いくつかのパラメータがあるスクリプトや他の端末から始めてもかまいません。
私は試した:
xfce4-terminal -x export PS1='> '
しかし、これはエラーを引き起こし、明らかに不可能です。
少しハッキングしても、どんな解決策でも大歓迎です。
答え1
名前を変更し.bashrc
、親プロセスの名前をテストします。
parent_process=$(ps -o comm= -p $PPID)
parent_process=${parent_process##*/}
case "$parent_process" in
xfce4-terminal) PS1='> ';;
esac
別の方法は、環境変数を設定することです。 runPROMPT_THEME=plain xfce4-terminal
とPROMPT_THEME
test.bashrc
そこから変数を設定解除するか、少なくともエクスポートを取り消すことができます。それ以外の場合は、最初の端末で開始された端末にも設定されます。
case $PROMPT_THEME in
plain) PS1='> ';;
esac
export -n PROMPT_THEME
の場合、xfce4-terminal
最初のインスタンスを除いては機能しません。後続のインスタンスは実行中のインスタンスに新しいウィンドウを開くように通知するため、新しいインスタンスは実行中のインスタンスから環境を継承します。 (はい!)ユーティリティを使用して、端末で実行されるコマンドを使用して環境変数を設定できますenv
。
xfce4-terminal -x env PROMPT_THEME=plain bash
答え2
どの端末が開いているかを確認してください。
case "$TERM" in
gnome-terminal ) PS1="[\h] \W > \[\033]0;[\u@\h] \w\007\]"
;;
xfce4-terminal ) PS1="> "
;;
esac
答え3
~/.bashrc
設定されていない場合は、PROMPT_COMMAND
次から始めることができますxfce4-terminal
。
PROMPT_COMMAND='PS1="> "; unset PROMPT_COMMAND' xfce4-terminal
答え4
1つの方法は、現在BASH PID($ $を介して取得)から始めて、PPIDを取得するなど、bashシェルの祖先となる端末を見つけるまで続けることです。この情報に基づいてPSを設定できます。
通常、シェルの親は端末です。
私のシステムの概念証明(Debian 7)。
$ PARENT_PID=$(ps --pid=$$ -o ppid --no-headers)
$ ps --pid $PARENT_PID -o command --no-headers
gnome-terminal -x /bin/sh -c cd '/home/XXXX/Desktop' && exec $SHELL
したがって、私のシステムでは、シェルの親を見ると、そのシェルがgnome端末で実行されていることがわかります。
一行にまとめると次のようになります。
$ ps --pid $(ps --pid=$$ -o ppid --no-headers) -o command --no-headers
gnome-terminal -x /bin/sh -c cd '/home/XXXX/Desktop' && exec $SHELL
私はこの行を.bashrc
MY_TERMINAL=$(ps --pid $(ps --pid=$$ -o ppid --no-headers) -o command --no-headers | cut -f 1 -d " ")
MY_TERMINAL
含まれていることを確認しましたgnome-terminal
。
だから大丈夫でしょう。