
Estou trocando de usuário usando o comando:
sudo su - userName
No meu terminal eu sempre tenho:
user@user directory $ (some command)
Mas quando mudo de usuário, tenho apenas:
$ (some commands)
É difícil explicar o que quero dizer, mas sou novo no Linux e não encontrei isso em outras questões. Como manter todos esses dados antes do sinal $ após o novo login?
Editar: Ok, funcionou para mim, recriei o usuário usando o comando: adduser name
Mas eu tenho outra pergunta. Este comando cria o diretório /home, mas está vazio. Existe algum comando para inicializar/home para o novo usuário?
Responder1
Mas eu tenho outra pergunta. Este comando cria o diretório /home, mas está vazio. Existe algum comando para inicializar/home para o novo usuário?
A solução para a segunda questão também resolverá a primeira. Seu novo usuário não possui todos os arquivos de configuração padrão em seu diretório inicial e, portanto, o novo shell não mostra um prompt sofisticado, etc.
O comando padrão para criar um novo usuárioeinicialize seu diretório inicial usando o conteúdo de /etc/skel
é:
useradd -m
E como foi dito, algumas distribuições possuem padrões errados, então você pode querer adicionar mais opções:
useradd -m -s /bin/bash
Para mais detalhes, use:
man useradd
Existem algumas ferramentas sofisticadas de nível superior específicas para distribuições. Um exemplo, usado no Debian e similares, já foi mencionado nos comentários à sua pergunta:
adduser
Além disso, há configurações em /etc que podem fazer com que useradd
se comporte como, useradd -m
mas IMO é melhor aprender a usar -m
sempre para evitar ser afetado por diferentes instalações e distribuições.
A partir dos comentários acima, é possível definir os padrões usando -D
o argumento para useradd
:
useradd -D -s /path/to/default/shell
Responder2
Você está mudando para um usuário normal e esse usuário não tem um $PS1 definido, mas na minha opinião você adiciona esse usuário usando o comando useradd no Debian. Baseado em que, por padrão, o shell quando você usa useradd é sh , então você pode tentar:
chsh -s /bin/bash userName
este comando mudará o shell de userName para /bin/bash. e tente novamente mudar para esse usuário. se você quiser alterar o shell padrão de um bash ao adicionar algum usuário usando useradd, você pode alterar o arquivo /etc/default/useradd.
sed -i -e "s@\(^SHELL\).*@\1=/bin/bash@g" /etc/default/useradd
Responder3
Você está mudando de um usuário normal (você) para outro usuário normal, digamos Joe, certo?
A seguir está o prompt do shell, definido na variável de ambiente PS1:
user@user directory $
Depois de mudar para Joe, você verá o prompt do shell de Joe. E ele não configurou para mostrar nada sofisticado no prompt, então apenas o prompt padrão é mostrado, que se parece com:
$
O segundo é o padrão do programa shell simples, o seu é provavelmente o padrão da distribuição Linux.
Tente configurar o PS1 para o mesmo que está na sua conta, isso deve ajudar:
user@usersBox directory $
eco "$ PS1"
e depois
$
PS1="......"
joe@usersBox directory $
Substitua o ...... pelo valor mostrado acima echo
.
A palavra após o "@" normalmente é o nome do computador, então acho que você deu ao computador o mesmo nome do seu nome de usuário durante a configuração.
Para tornar o exemplo menos confuso, mudei o nome do computador para "usersBox".
Talvez ele tenha removido a variante que você intencionalmente. Mas provavelmente é causado por algum pequeno problema técnico aleatório, e ele ficaria bem se você alterasse isso para ele também, em seus arquivos de inicialização, como ~/.bashrc ou similar, dependendo do tipo de shell usado por ele.