Suponha que eu faça muito trabalho no diretório /home/user/documents/foo
, então o prompt do shell Bash poderia aparecer da seguinte forma:
user@hostname: ~/documents/foo/bar/baz $
Meu terminal é bem estreito, e isso ~/documents/foo
não é um uso útil do espaço, pois eu já sei que estou lá.
Portanto, gostaria que meu prompt de shell mostrasse o diretório de trabalho relativo a /home/user/documents/foo
:
user@hostname: bar/baz $
O prompt é definido pela PS1
variável de ambiente, e posso encontrar maneiras de editá-lo para incluir o caminho relativo ao diretório inicial do meu usuário, ou incluir apenas o nome base, mas não consigo obter um caminho relativo a um diretório diferente.
Do
bash
manual:Se a string do seu prompt (
PS1
) usar\w
ou\W
, você pode querer usarPROMPT_DIRTRIM=2
.O Zsh
%~
encurta qualquer diretório nomeado similarmente ao$HOME
que é encurtado tanto no zsh quanto no Bash. Mas se você não quiser mudar de shell, você pode fazer isso manualmente no Bash com algo assim:Aqui,
shorten_dirs()
substitui a parte inicial do diretório de trabalho de$PWD
e a substitui por uma abreviação se ela corresponder a qualquer um dos mapeamentos no array associativoshort_dirs
. A função define ashorter_dir
variável que é usada no próprio prompt.PROMPT_COMMAND
chama a função antes de cada prompt ser impresso.Na prática, parece algo assim (começando em
/
):Mas isso não foi testado extensivamente.