Altere o valor de PS1 para todos os usuários do Bash

1

Estou tentando alterar o valor do prompt para todos os usuários de um sistema (a variável $ PS1) para o mesmo valor.

Eu tenho o seguinte armazenado no arquivo / etc / ps1:

PS1=''
  if [ $? -eq 0 ];
    then echo -n "\[3[00;35m\]\u\[3[01;32m\]@\[3[00;35m\]\h\[3[00;32m\](\[3[01;35m\]\W\[3[01;32m\])\[3[00;32m\]\$";
    else echo -n "\[3[00;35m\]\u\[3[01;31m\]@\[3[00;35m\]\h\[3[01;31m\](\[3[35m\]\W\[3[31m\])\[3[00;31m\]\$";
  fi'\[3[0m\]'

Sob minha única conta de usuário, eu posso adicionar source /etc/ps1 ao meu arquivo ~ / .profile, o que funciona (curiosamente não funcionou quando eu adicionei isso a ~ / .bashrc). Se eu adicionar isso ao / etc / profile ou /etc/bashrc.basrch para que isso aconteça para todos os usuários, nada acontece. Estou arrancando meu cabelo tentando fazer com que isso funcione. Isto está no Debian 7.1.0 (Linux 3.2.46).

    
por jwbensley 10.10.2013 / 20:59

1 resposta

6

Adicione sua configuração PS1 modificada a /etc/profile.d/custom_ps1.sh . Arquivos sob /etc/profile.d são automaticamente originados de /etc/profile :

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

O que é chamado sempre que um shell de login é gerado. Na bash manpage :

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

    
por 10.10.2013 / 21:14