新しいプロンプトが表示されるたびにbashプロンプト実行コマンド


11

現在のgitブランチを表示する次のプロンプトがbashにあります。

PS1+="$(git_prompt)" #git_prompt is a function in my .bashrc

これは、.bashrcをソースするときは機能しますが、ブランチを変更するときは機能しないため、PS1変数は.bashrcをソースするときにのみ評価されますが、新しいプロンプトが表示されるたびに評価する必要があります。これはどのようにしてbash 4.3で実現できますか?

回答:


14

あなたの問題は、に追加される$(git_prompt)定数文字列評価されることです$PS1。代わりにコードを追加する必要があります。

PS1+='$(git_prompt)'

2
これはエラーbash: command substitution: line 1: syntax error near unexpected token ) 'bash:コマンド置換:1行目:git_prompt)'
danielr1996

1
それは本当に奇妙です。「バックアップ」を作成します(oldPS1="$PS1")してから試してください:PS1='$(git_prompt) '
Hauke Laging

9

これをプロンプトとして使用して修正しました

PS1="$green\u $r@ $red\h $r: $yellow\W \!$r \$(git_prompt) \n$yellow\$ $r"

複数の文字列を1つのPS1文字列に連結する前に、問題があるように見えました。コツは\、コマンドを実行する前にを書くこと$(git_prompt)です。

$(git_prompt)評価時に.bashrc評価され、

\$(git_prompt) 新しいプロンプトが表示されるたびに評価されます


5
将来これを見つけた人のために:"文字列を囲む二重引用符に注意してください。\$(git_prompt)それらなしで使用しても動作しません。
dthor 2016

1

あなたのps1で単一引用符を試してください

PS1+='$(git_prompt)'

私も私のpsOne関数を提案します

psOne () 
{ 
    ps1tm=${1:-01};
    ps1tc=(30 31 32 33 34 35 36 37 38);
    PS1='${debian_chroot:+($debian_chroot)}\[\033[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\]\u\[\033[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\]@\[\033[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\]\h\[\033[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\] :\[\033[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\] \w\[\033[${ps1tm};${ps1tc[$((RANDOM%${#ps1tc[@]}))]}m\] \$ '
}

ここに画像の説明を入力してください


これは面白そうです、ps1tmの目的を説明できますか?
danielr1996、2016

@ danielr1996そのテキストモード(太字太字を取り消す点滅下線{0..5}、引数が存在しない場合、この機能では、01に設定されています
ジョナ

0

狂気を見たいですか?これが私のbashプロンプトを作成する方法です:

# inspiration: http://www.stumbleupon.com/su/2LpQMi 
user_host_path="${debian_chroot:+($debian_chroot) }"'\u@\h:\w'
xterm_title='\[\e]0;'"$user_host_path"'\a\]'
[[ $TERM == xterm* || $TERM == rxvt* ]] && line1="${xterm_title}"
git_branch='$(git_current_branch " (%s)")'
line1="${line1}${user_host_path}${git_branch} "
line2='\$ '
print_time='{ printf "%*s" $(($(tput cols) - 10)) " "|sed -e "s/./˙/g" -re "s/.{6}(..)$/ bash \1/"; date "+ %T"; } >&2'
color_bold='\[\e[0;1m\]'
color_reset='\[\e[0m\]'
PROMPT_COMMAND="_rc_=\$?;${print_time};((_rc_!=0)) && PS1='${line1}\n${color_bold}[\$_rc_]${color_reset} ${line2}' || PS1='${line1}\n${line2}'"
unset user_host_path xterm_title color_bold color_reset line1 line2 print_time git_branch

私は色の大ファンではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.