Changez le \w
(minuscule) à \W
(majuscule):
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
^^
this one waaaaaay over here ------------------------------------------------+
Jetez un œil au Bash Prompt HOWTO pour de nombreux détails amusants. exemple :
[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$
Le PROMPT_COMMAND
la variable, si définie, est une commande qui est exécutée avant d'afficher l'invite spécifiée dans PS1
. Dans votre cas, PROMPT_COMMAND
exécute un echo
avec certaines séquences d'échappement ANSI qui manipulent la barre de titre d'un Xterm.
Si vous suspectez votre PROMPT_COMMAND
remplace votre PS1
invite, vous pouvez unset
et testez les choses :
$ unset PROMPT_COMMAND
Enfin, assurez-vous que vous modifiez le PS1
définition qui est effectivement utilisée. Les emplacements communs sont /etc/bash.bashrc
, /etc/profile
, ~/.bashrc
, ~/.bash_profile
, ~/.profile
. Les fichiers système sont généralement (mais pas toujours) exécutés avant les fichiers utilisateur.
La commande simple bash replace est
${VAR/pattern_to_find/pattern_to_replace}
Pour afficher le dernier répertoire, vous pouvez simplement faire ${PWD/*\//}
, c'est-à-dire trouver n'importe quoi avant et y compris le dernier '/
' et remplacez-le par rien.
Sur ma machine ubuntu j'utilise :
export PS1='$(whoami):${PWD/*\//}#'.
Ma solution consiste à afficher les trois premiers et les deux derniers répertoires lorsqu'il y en a plus de 5
Donc, mon invite (qui contient également d'autres informations) ressemble à :
08:38:42 durrantm U2017 /home/durrantm/Dropbox/_/rails/everquote
quand mon mot de passe est en fait
/home/durrantm/Dropbox/93_2016/work/code/ruby__rails/rails/everquote
Mon invite PS1 est configurée comme suit :
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
est une fonction qui montre la branche git actuelle, je la garde dans mes dotfiles, c'est :
git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}