/ etc / bashrc sobrescreve minhas configurações em home .bashrc

0

Eu tenho o seguinte código para o meu prompt em .bashrc no diretório home:

PS1_TIME='3[01;31m\]\t 3[01;32m\]'
PS1_USERNAME='\[\e[1;36m\]\u\e[1;37m\]@\e[1;32m\]\h\[3[00m\]'
PS1_LOCATION='\[3[01;34m\]\w\[3[00m\]'

PS1=$PS1_TIME$PS1_USERNAME':'$PS1_LOCATION'\n\$ '
PS2='\[3[01;36m\]>'

Eu também tenho a seguinte configuração em / etc / bashrc

# are we an interactive shell?
if [ "$PS1" ]; then
  if [ -z "$PROMPT_COMMAND" ]; then
    case $TERM in
    xterm*|vte*)
      if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
          PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
      elif [ "${VTE_VERSION:-0}" -ge 3405 ]; then
          PROMPT_COMMAND="__vte_prompt_command"
      else
          PROMPT_COMMAND='printf "13]0;%s@%s:%s
[PS1 from ect][PS1 from home dir]:
7" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"' fi ;; screen*) if [ -e /etc/sysconfig/bash-prompt-screen ]; then PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen else PROMPT_COMMAND='printf "23k%s@%s:%s3\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"' fi ;; *) [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default ;; esac fi

O resultado é que meu prompt do shell está configurado de dois: prompt de / etc é mesclado com minhas configurações de casa

PS1_TIME='3[01;31m\]\t 3[01;32m\]'
PS1_USERNAME='\[\e[1;36m\]\u\e[1;37m\]@\e[1;32m\]\h\[3[00m\]'
PS1_LOCATION='\[3[01;34m\]\w\[3[00m\]'

PS1=$PS1_TIME$PS1_USERNAME':'$PS1_LOCATION'\n\$ '
PS2='\[3[01;36m\]>'

Como alterar minhas configurações locais para que meu diretório inicial substitua os padrões?

Eu não quero alterar o arquivo no etc ou preciso?

    
por Michel 31.07.2018 / 10:47

1 resposta

1

PS1 e PROMPT_COMMAND são duas variáveis diferentes com finalidades diferentes. E, como afirma o manual do Bash :

PROMPT_COMMAND

If set, the value is interpreted as a command to execute before the printing of each primary prompt ($PS1).

Observe que PROMPT_COMMAND não deve ser usado como prompt, mas como um comando a ser executado antes que o prompt real seja impresso.

Para corrigir isso, e se você não quiser editar seu /etc/bashrc , é preciso cancelar ou atribuir um valor nulo a PROMPT_COMMAND em seu local .bashrc :

unset PROMPT_COMMAND
# or
PROMPT_COMMAND=

Exemplo em uma sessão interativa ( foobar$ é meu prompt inicial):

foobar$ printf 'PROMPT_COMMAND: [%s]\nPS1: [%s]\n' "$PROMPT_COMMAND" "$PS1"
PROMPT_COMMAND: [printf foo]
PS1: [bar$ ]
foobar$ 

Desvinculando PROMPT_COMMAND :

foobar$ unset PROMPT_COMMAND
bar$ 

Atribuindo um valor nulo a PROMPT_COMMAND :

foobar$ PROMPT_COMMAND=
bar$ 
    
por 31.07.2018 / 12:42