Her yeni bir istem görüntülendiğinde Bash istemi yürütme komutu


11

Geçerli git dalını gösteren bash aşağıdaki istemi var:

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

.bashrc kaynağını aldığımda çalışır, ancak dalı değiştirdiğimde çalışmaz, bu nedenle PS1 var yalnızca .bashrc kaynağını aldığımda değerlendirilir, ancak her yeni istem görüntülendiğinde değerlendirilmelidir. Bu bash 4.3 ile nasıl yapılabilir?

Yanıtlar:


14

Sorun, eklenmeden önce$(git_prompt) bazı sabit dize değerlendirilir olmasıdır . Bunun yerine kodu eklemelisiniz:$PS1

PS1+='$(git_prompt)'

2
bu hata verir bash: command substitution: line 1: syntax error near unexpected token ) 'bash: komut değiştirme: satır 1:git_prompt)'
danielr1996

1
Bu gerçekten garip. Bir "yedekleme" ( oldPS1="$PS1") yapın ve deneyin:PS1='$(git_prompt) '
Hauke ​​Laging

9

Bunu istem olarak kullanarak şimdi düzelttim

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

Bir PS1 dizesine birden çok dizeyi birleştirmeden önce, sorun var gibiydi. Hile \komutu ile kesmeden önce a yazmaktır $(git_prompt).

Yani $(git_prompt)ne zaman değerlendirilecek .bashrcdeğerlendirilir ve

\$(git_prompt) yeni bir istem görüntülendiğinde değerlendirilecektir


5
Gelecekte bunu bulan herkes için: "Dizenin etrafındaki çift ​​tırnak işaretlerini not edin . \$(git_prompt)Bunlar olmadan kullanmak işe yaramaz.
dthor

1

ps1'inizde tek bir teklif deneyin

PS1+='$(git_prompt)'

ben de benim psOne fonksiyonu önermek

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\] \$ '
}

resim açıklamasını buraya girin


Bu ilginç görünüyor, ps1tm'nin ne için olduğunu açıklayabilir misiniz?
danielr1996

@ danielr1996 metin modu (kalın, kalın, koyu renkte göz kırpma altı çizili {0..5}, bu işlevlerde bağımsız değişken yoksa 01 olarak ayarlanır
Jonah

0

Deliliği görmek ister misin? Ben bash istemimi şu şekilde inşa ediyorum:

# 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

Ben büyük bir renk hayranı değilim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.