カスタムプロンプト文字列を使用してzshを介して新しいターミナルインスタンスを起動します。

カスタムプロンプト文字列を使用してzshを介して新しいターミナルインスタンスを起動します。

ターミナルエミュレータ(好ましくはgnome-terminal)を起動し、カスタムプロンプト文字列を使用して内部で対話型zshを実行できるようにしたいです。デフォルトのプロンプト文字列を最も頻繁に使用し、時にはカスタムzshプロンプト文字列で端末を起動したいので、変更したくありません.zshrc(具体的には、右側のプロンプトに時間が表示されたい)。 。

ターミナルウィンドウが既に開いている場合は、次の手順を実行してこの問題を解決できます。

export RPS1=%T zsh

ただし、新しいターミナルインスタンスを起動したときに機能させる構文を見つけることはできません。各コマンドの下のエラーメッセージで試した操作は次のとおりです。

gnome-terminal -- export RPS1=%T zsh
# Error: Failed to execute child process “export” (No such file or directory)
gnome-terminal -- sh -c export RPS1=%T zsh
# Prints all the options, like with `set`
# and then exits with "The child process
# exited normally with status 0".
gnome-terminal -- sh -c "export RPS1=%T zsh"
# The child process exited normally with status 0.
gnome-terminal -- sh -c "export RPS1=%T; zsh"
# This start the terminal with zsh, but the RSP1 is not changed

カスタムrcファイルを読むことを検討しましたが、この答えのようにしかし、これを使わずにzshでこれを行う方法はないようですsource。これにより上記と同様の問題が発生しました。

答え1

では、次のように設定して上書きをzshrc許可します。RPS1

# If rps1 is not set, use a default value
RPS1=${rps1-"Your usual RPROMPT"}
  • RPS1これで、環境で設定して別のコマンドでコマンドを実行できるようになりますrps1。たとえば、次のようになります。
rps1=%T gnome-terminal
  • パラメータ拡張によりnullに設定${param-word}できます。RPS1
rps1= gnome-terminal

シェルで使用されるパラメータ(たとえばRPS1)はエクスポートする必要はありません。これはシェルを設定するために使用されるため、rcファイルで一度設定する必要があります。

プログラム(例えばgnome-terminal)がその環境で起動すると、rps1そのプログラムで開始されたすべての後続のプログラムがrps1その環境でそのプログラムを表示できます。これを防ぐには、次のいずれかを追加できますzshrcunset rps1(投稿の設定に使用RPS1)またはtypeset +x rps1


ところで、次は2つのシェル変数をエクスポートします。

export RPS1=%T zsh
  • 上記には、環境に環境を生成させるexport2つのパラメーターがあります。RPS1=%Tzsh=''
  • RPS1現在のシェルで設定するには:
RPS1=%T

答え2

シェルを実行すると、シェルはプロンプトを/~.zshrcオーバーライドするのを処理します。

1つのオプションは次のとおりです~/.zshrc

MY_PROMPT="${MY_PROMPT:-"> "}" # Set the value to "> " if it isn't currently set
RPS1="${MY_PROMPT}"

その後、シェルを起動すると、次のようになります。

> 
> MY_PROMPT="my new prompt > " zsh
my new prompt >

非標準変数(ここMY_PROMPT)を選択するのはシェルです~/.zshrc

関連情報