Qual é a diferença entre 'su' e 'su -' no CentOS?

7

Eu tentei mudar para 'root' no CentOS executando su . Ele muda para 'root', mas não parece ser um verdadeiro usuário 'root'.

Por exemplo, por padrão, o comando ifconfig em /sbin não é encontrado no caminho de um usuário normal, mas, para 'root', o comando pode ser encontrado. Quando executo su , ainda recebo bash: ifconfig: command not found output quando tento executar ifconfig .

No entanto, quando executo su - , ifconfig apenas funciona.

Qual é a diferença entre su e su - no CentOS?

    
por PJ. 31.01.2010 / 05:19

2 respostas

16

Adicionar a opção - afeta seu comportamento no ambiente. Para todos os efeitos práticos, o ambiente é completamente reiniciado. Em geral, você provavelmente deseja usar su - em vez de su . Na página do manual:

 -l      Simulate a full login.  The environment is discarded except for HOME, SHELL, PATH, TERM, and USER.  HOME and SHELL are modified as above.
         USER is set to the target login.  PATH is set to ''/bin:/usr/bin''.  TERM is imported from your current environment.  The invoked shell is
         the target login's, and su will change directory to the target login's home directory.

 -       (no letter) The same as -l.
    
por 31.01.2010 / 05:34
6

su - invoca um shell de login, que, entre outras coisas, garante que os scripts% de inicialização.bashrc e outros scripts de inicialização do shell sejam executados, como se você tivesse efetuado login diretamente como root via console ou SSH. O perfil de root geralmente define seu caminho para incluir /sbin , que é o local em que o ifconfig geralmente mora.

    
por 31.01.2010 / 05:32