Cambia el \w
(minúsculas) a \W
(mayúsculas):
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
^^
this one waaaaaay over here ------------------------------------------------+
Eche un vistazo al CÓMO de Bash Prompt para obtener muchos detalles divertidos. ejemplo:
[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$
El PROMPT_COMMAND
variable, si se establece, es un comando que se ejecuta antes de mostrar el indicador especificado en PS1
. En tu caso, PROMPT_COMMAND
ejecuta un echo
declaración con ciertas secuencias de escape ANSI que manipulan la barra de título de un Xterm.
Si sospechas que tu PROMPT_COMMAND
está anulando tu PS1
solicitud, puede unset
y probar cosas:
$ unset PROMPT_COMMAND
Finalmente, asegúrese de cambiar el PS1
definición que realmente se utiliza. Las ubicaciones comunes son /etc/bash.bashrc
, /etc/profile
, ~/.bashrc
, ~/.bash_profile
, ~/.profile
. Los archivos del sistema generalmente (pero no siempre) se ejecutan antes que los archivos del usuario.
El comando bash replace simple es
${VAR/pattern_to_find/pattern_to_replace}
Para mostrar el último directorio, solo puede hacer ${PWD/*\//}
, es decir, encontrar cualquier cosa antes e incluyendo el último '/
' y reemplazarlo con nada.
En mi máquina ubuntu uso:
export PS1='$(whoami):${PWD/*\//}#'.
Mi solución es mostrar los tres directorios superiores y los 2 inferiores cuando hay más de 5
Así que mi aviso (que también tiene otra información) se ve así:
08:38:42 durrantm U2017 /home/durrantm/Dropbox/_/rails/everquote
cuando mi pwd es en realidad
/home/durrantm/Dropbox/93_2016/work/code/ruby__rails/rails/everquote
Mi aviso de PS1 está configurado de la siguiente manera:
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
es una función que muestra la rama actual de git, la guardo en mis archivos de puntos, es:
git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}