回答:
これは可能です。入力var=$var
し、展開して編集します。展開するには、Esc+ Ctrle(デフォルトのショートカット、出力bind -p | grep shell-expand-line
を確認して確認)を使用します。
そう:
muru@muru-1604:~$ PS1=$PS1
となります:
muru@muru-1604:~$ PS1=${debian_chroot:+($debian_chroot)}\u@\h:\w\$
エディターで編集できますCtrlx Ctrle(edit-and-execute-command
readline用語)。保存して終了すると、保存されたコンテンツはシェルによって実行されます。
すでにPS1=...
履歴にある場合は、その履歴に戻ることができますCtrlx Ctrle。
bashマニュアルから:
shell-expand-line (M-C-e)
シェルと同じように行を展開します。これは、エイリアスと履歴の拡張、およびすべてのシェルワードの拡張を実行します。
edit-and-execute-command (C-xC-e)
現在のコマンドラインでエディターを起動し、結果をシェルコマンドとして実行します。Bashは、$ VISUAL、$ EDITOR、emacsをこの順序でエディターとして起動しようとします。
bind -p
、を読んで、グロブ、チルド、履歴行を拡張できることもわかりました。きちんと!
bashrcを調達する代わりに、変数のみを含む別のファイルを入手します。
作成:
echo "PS1='$PS1'" > /tmp/PS1
注:変数に単一引用符が含まれている場合は、それらをエスケープできるコマンドを使用する必要があります。例:
declare -p PS1 | cut -d' ' -f3- > /tmp/PS1
エディタなどで開きnano /tmp/PS1
ます。
nano
何度も繰り返して、あなたは他の端末/ TTYでそれを実行することができ、またはグラフィカルエディタを使用します。変更を加えて保存します。
ソース:
source /tmp/PS1
必要に応じて手順3と4を繰り返します。
Zshには、vared
変数をインラインで編集できるというが組み込まれています。私は自分のバージョンを書いて、もともとスーパーユーザーに投稿しました:
vared(){
# Based on the zsh builtin of the same name.
IFS= read -rei "${!1}" "$1"
}
これはZshビルトインとは微妙な違いがあることに注意してください。例:
vared $
)次に、PS1を編集するには、を実行しvared PS1
ます。
PS1='$PS1'
しても、引用符は削除されましたが、入力PS1=\'$PS1\'
は完全に機能します。