Por que o prompt do terminal muda para `-bash-4.2$` ao trocar de usuário no Linux e como corrigir

Ao alternar entre usuários em um sistema Linux — por exemplo, saindo do root e entrando em um usuário comum como devuser — é comum observar que o prompt do shell perde sua formatação habitual (como usuario@host) e passa a exibir apenas -bash-4.2$. Esse comportamento indica que o ambiente do shell não foi devidamente inicializado. Abaixo explicamos as causas e apresentamos soluções eficazes.

1. Causa principal: ausência de arquivos de configuração do shell

O Bash exibe o prompt mínimo -bash-4.2$ quando **não encontra os arquivos de inicialização esperados** no diretório home do usuário. Os principais arquivos envolvidos são:

  • .bash_profile
  • .bashrc
  • .profile

O Bash segue regras específicas para carregar esses arquivos:

  • Shell de login (ex.: su - devuser ou acesso via SSH): busca /etc/profile, depois ~/.bash_profile, ~/.bash_login ou ~/.profile (na ordem).
  • Shell não interativo ou não-login (ex.: su devuser): carrega apenas ~/.bashrc.

Se nenhum desses arquivos existir, o Bash inicia em modo básico, sem personalização do prompt.

2. Por que os arquivos estão ausentes?

  • Criação incorreta do usuário: uso de useradd sem a opção -m, que evita a criação automática do diretório home e cópia dos arquivos base.
  • Exclusão acidental: comandos como rm -rf ~/.* podem apagar arquivos ocultos essenciais.
  • Problemas de permissão: arquivos existem, mas pertencem a outro usuário (ex.: root) ou têm permissões inadequadas.

3. Soluções práticas

Método 1: Restaurar a partir do diretório skeleton

# Entrar como o usuário afetado
su - devuser

# Copiar arquivos padrão do skeleton
cp -r /etc/skel/. ~/

# Recarregar o ambiente
source ~/.bashrc

O diretório /etc/skel/ contém os arquivos modelo usados na criação de novos usuários.

Método 2: Criar manualmente os arquivos essenciais

Se preferir confiugrar do zero, crie os seguintes arquivos:

~/.bash_profile:

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

~/.bashrc:

# Habilitar cores e aliases úteis
alias ls='ls --color=auto'
alias grep='grep --color=auto'

# Definir prompt colorido
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
export PS1

# Carregar configurações globais, se existirem
[ -f /etc/bash.bashrc ] && source /etc/bash.bashrc

Método 3: Corrigir permissões

# Verificar propriedade do diretório home
ls -ld /home/devuser

# Ajustar dono (substitua 'devuser' pelo nome real)
sudo chown -R devuser:devuser /home/devuser

# Garantir permissões seguras nos arquivos de configuração
chmod 644 /home/devuser/.*

4. Dicas avançadas

  • Prompt com branch do Git: adicione ao ~/.bashrc: ``` parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^]/d' -e 's/ (.*)/ (\1)/' } PS1='[\033[01;32m]\u@\h[\033[00m]:[\033[01;34m]\w[\033[31m]$(parse_git_branch)[\033[00m]$ '
  • Configuração centralizada: coloque scripts comuns em /etc/shell.d/ e inclua-os automaticamente no .bashrc de cada usuário.

5. Resumo rápido

Sintoma Causa Solução
Prompt -bash-4.2$ Arquivos de configuração ausentes no home Copiar de /etc/skel/ ou criar manualmente

Dica final: sempre use useradd -m -s /bin/bash nome ao criar usuários para garantir um ambiente funcional desde o início.

Tags: Bash Linux shell prompt Usuários

Publicado em 9-6 01:02