Trocar usuário no terminal

Trocar usuário no terminal

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 useraddse comporte como, useradd -mmas IMO é melhor aprender a usar -msempre para evitar ser afetado por diferentes instalações e distribuições.

A partir dos comentários acima, é possível definir os padrões usando -Do 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.

informação relacionada