O prompt do bash foi redefinido toda vez que eu fiz login

O prompt do bash foi redefinido toda vez que eu fiz login

Pergunteiessa questãohá algum tempo sobre o shell não exibindo o caminho. Recentemente descobri que o .bashrcproduto não é adquirido (e isso deveria ser umPrática normal?). Atualmente, o prompt de comando do shell é assim:

-bash-4.3#

depois de executar source .bashrc, consigo obter o prompt de comando do shell esperado:

root@ubuntu2011:~#

onde ubuntu2011está o nome da máquina. Como posso fazer com que o prompt se pareça com o último sempre que faço login?

ps o .bashrcé de:cp /etc/skel/.bashrc ~/.bashrc


ATUALIZAR: o conteúdo de ~/.profileé o seguinte:

# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n

e echo $BASHretorna/bin/bash


ATUALIZAR: Respostas às perguntas de @terdon:

  1. Como faço login no servidor?

Eu uso para fazer login comossh [email protected]root

  1. Esses comandos são executados como root?

Sim.


ATUALIZAR: A saída de ls -l ~/.{profile,bashrc,bash_profile,bash_login}:

ls: cannot access /root/.bash_login: No such file or directory
-rw-r--r-- 1 root root   63 Dec 24  2012 /root/.bash_profile
-rw-r--r-- 1 root root 3637 May 17 17:00 /root/.bashrc
-rw-r--r-- 1 root root  140 Apr 23  2010 /root/.profile

Responder1

Isso acontece porque você está fazendo login através do ssh. Tudo se resume às diferenças entre shells de login e não-login. Ao se conectar via ssh, você executa um shell interativo de login. Conforme explicado em man bash, esse tipo de shell irá:

Quando o bash é invocado como um shell de login interativo ou como um shell não interativo com a opção --login, ele primeiro lê e executa comandos do arquivo /etc/profile, se esse arquivo existir. Depois de ler esse arquivo, ele procura ~/.bash_profile, ~/.bash_login e ~/.profile, nessa ordem, e lê e executa comandos do primeiro que existe e é legível. A opção --noprofile pode ser usada quando o shell é iniciado para inibir esse comportamento.

Em outras palavras, ~/.bashrcé ignorado por padrão ao executar shells de login. A solução simples é obtê-lo explicitamente de um dos arquivos que são lidos. Como você pode ver acima, os shells de login tentarão primeiro ler ~/.bash_profilee, se isso não existir ~/.bash_login, e se também não existir, eles lerão ~/.profile. Como você tem um ~/.bash_profilearquivo, você precisará adicionar estas linhas a ele:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

Responder2

Coloque isso em seu ~/.profile

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

informação relacionada