私はPS1
を設定して、ログイン直後に何かを出力するが、後で改行が始まるようにしようとしている。PS1で条件付き改行を設定するには?
と仮定export PS1="\h:\W \u\$ "
ので、初めて(すなわち、右のログイン後に)あなたが得る:私は私の~/.bashrc
でのようなものをしようとしてきた
hostname:~ username$
:
function __ps1_newline_login {
if [[ -n "${PS1_NEWLINE_LOGIN-}" ]]; then
PS1_NEWLINE_LOGIN=true
else
printf '\n'
fi
}
export PS1="\$(__ps1_newline_login)\h:\W \u\$ “
得ることを期待:
# <empty line>
hostname:~ username$
最初の完全な例は次のとおりです。
hostname:~ username$ ls `# notice: no empty line desired above!`
Desktop Documents
hostname:~ username$
、あなたのコマンドが動作しない理由は、1)あなたは二重引用符を使用するため、実行__ps1_newline_loginされていること2)単一引用符を使用した場合、関数は$(..)のためにサブシェルで実行されるため、設定した変数はその外側には表示されません。 –
@thatotherguyこの説明はありがとうございます。それは私の様々な問題を理解するのに本当に役立った。 – Ali
@thatotherguyはこれについてもう一度考えます: '__ps1_newline_login'は毎回ではなく1回だけ実行されることを絶対に確信していますか?例えば、 '__git_ps1'はこの全く同じテクニックを使って、最初だけでなくすべてのプロンプトを設定します。 – Ali