
Pergunteiessa questãohá algum tempo sobre o shell não exibindo o caminho. Recentemente descobri que o .bashrc
produto 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 ubuntu2011
está 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 $BASH
retorna/bin/bash
ATUALIZAR: Respostas às perguntas de @terdon:
- Como faço login no servidor?
Eu uso para fazer login como
ssh [email protected]
root
- 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_profile
e, se isso não existir ~/.bash_login
, e se também não existir, eles lerão ~/.profile
. Como você tem um ~/.bash_profile
arquivo, 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