質問: 条件付きps1 私は基本的に、gitリポジトリでps1を次のように見せようとしています。$ ~/projects/blah (master): または、gitリポジトリにいない場合は、次のように表示します。$ ~/projects/blah: これは私の現在のps1です。export ps1="$ \w \$(__git_ps1): " git repo出力では機能しますが、問題は、git repoにいない場合、出力が次のようになることです。$ ~/projects/blah : gitリポジトリでない場合、そのスペースは本当に必要ありません。ps1でこれを指定する方法はありますか?
回答: この種のことのために私がすることは、ディレクトリを変更するときにps1の値を変更することです。これは、chpwdコマンドを実行するzshでは簡単です。 cdとその仲間のラッパーを定義する によってbashで実行できます。cd () { builtin cd "$@" && chpwd; } pushd () { builtin pushd "$@" && chpwd; } popd () { builtin popd "$@" && chpwd; } chpwd () { if git rev-parse --show-toplevel 2>/dev/null >/dev/null; then ps1='$ \w $(__git_ps1): ' else ps1='$ \w: ' fi }