O nome de usuário Linux @ server desaparece após o login como root

3

No meu servidor linux eu entrei como usuário root para acessar alguns arquivos: su root ... Depois de verificar os arquivos eu fui entrar como meu usuário principal su username . Na minha janela de terminal, ele agora diz server ~: em vez de username @ server ~: à esquerda da linha de comando. Existe alguma maneira de eu voltar ao normal?

    
por random 06.08.2009 / 02:55

6 respostas

12

Faça alguns comandos exit . Seu su root iniciou um subshell no qual você é root e seu su user iniciou outro. Digitar exit terminará esses subshells e o levará de volta ao ponto de partida - um nível de profundidade.

    
por 06.08.2009 / 02:58
6

Você só precisa alterar o prompt. Você pode usar o seguinte comando:

export PS1="\u@\h \w: "

Eu pessoalmente prefiro o seguinte como meu prompt, mas isso é só comigo:

export PS1="[\u@\h \w]\$ "

Você pode impedir que seu prompt seja alterado adicionando a instrução aos arquivos bashrc relevantes. Veja também Bash Shell PS1: 10 Exemplos para fazer seu prompt do Linux como Angelina Jolie para mais informações sobre o PS1.

    
por 06.08.2009 / 03:00
5

su alterna usuários gerando um novo (sub) shell. Então quando você logou, você iniciou um shell. Com o primeiro su para root, você iniciou um subshell como root. O próximo su para o seu usuário começou com outro subshell - note que neste momento você tem três shells em execução. Então, em vez de su -ing para o seu usuário do rootshell, exit -ing de volta ao seu shell de login resolverá seus problemas.

Se você tiver pstree instalado, pstree -h mostrará uma representação gráfica do que está acontecendo.

    
por 06.08.2009 / 03:25
4

Seu prompt parece ser normalmente configurado por um de seus arquivos de inicialização do shell não sendo executado quando você su da raiz para o usuário. Se você estiver usando bash, man bash na seção INVOCATION pode ser esclarecedor. Existem vários arquivos de inicialização que o bash pode ler, incluindo, mas não se limitando a:

  • /etc/profile
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile
  • ~/.bashrc

A variável de ambiente PS1 é apenas uma variável de ambiente e pode ou não ser definida dependendo de qual combinação dos arquivos acima é executada.

O comando su tem uma opção -l (ou --login ) que pode ser abreviada para apenas - , o que torna o novo shell um shell de login. Isto é provavelmente o que você quer:

su - david

Eu sempre uso su com essa opção.

    
por 06.08.2009 / 04:20
1

se este for um bash shell, tente:

source ~/.bashrc

se isso não funcionar, execute echo $PS1 e veja o que mudou.

    
por 06.08.2009 / 03:00
1

su por si só não cria uma nova sessão do shell. é por isso que não configura o shell como normalmente faz. no entanto,

su -

iniciará uma nova sessão de login

    
por 06.08.2009 / 04:02