Změňte \w
(malá písmena) na \W
(velká písmena):
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
^^
this one waaaaaay over here ------------------------------------------------+
Podívejte se na Bash Prompt HOWTO, kde najdete spoustu zábavných detailů. příklad:
[email protected]:/usr/local/bin$ echo $PS1
${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$
[email protected]:/usr/local/bin$ export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\W\[\033[00m\]\$ '
[email protected]:bin$
PROMPT_COMMAND
proměnná, pokud je nastavena, je příkaz, který se spustí před zobrazením výzvy specifikované v PS1
. Ve vašem případě PROMPT_COMMAND
spustí echo
příkaz s určitými sekvencemi escape ANSI, které manipulují s titulkem Xtermu.
Pokud máte podezření na váš PROMPT_COMMAND
přepisuje vaše PS1
můžete unset
to a vyzkoušet věci:
$ unset PROMPT_COMMAND
Nakonec se ujistěte, že měníte PS1
definice, která se skutečně používá. Běžná umístění jsou /etc/bash.bashrc
, /etc/profile
, ~/.bashrc
, ~/.bash_profile
, ~/.profile
. Systémové soubory jsou obecně (ale ne vždy) spouštěny před uživatelskými soubory.
Jednoduchý příkaz nahrazení bash je
${VAR/pattern_to_find/pattern_to_replace}
Pro zobrazení posledního adresáře stačí udělat ${PWD/*\//}
, tj. najít jakoukoli věc před a včetně posledního '/
“ a nahraďte jej ničím.
Na svém počítači s ubuntu používám:
export PS1='$(whoami):${PWD/*\//}#'.
Moje řešení je zobrazit tři horní a dva spodní adresáře, když jich je více než 5
Takže moje výzva (která má i jiné informace) vypadá takto:
08:38:42 durrantm U2017 /home/durrantm/Dropbox/_/rails/everquote
když moje pwd je ve skutečnosti
/home/durrantm/Dropbox/93_2016/work/code/ruby__rails/rails/everquote
Moje výzva PS1 je nastavena následovně:
HOST='\[\033[02;36m\]\h'; HOST=' '$HOST
TIME='\[\033[01;31m\]\t \[\033[01;32m\]'
LOCATION=' \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
git_branch
je funkce, která ukazuje aktuální větev git, uchovávám ji ve svých dotfiles, je to:
git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}