su vs. su -

su vs. su -
A diferença entre o su e o hifenizado su - comandos é o su comando sem argumentos mantém quase todas as variáveis ​​de ambiente pertencentes ao usuário original. Ao contrário disso, o hifenizado su - O comando limpa a maioria das variáveis ​​de ambiente.

Não estamos falando de dois comandos diferentes, mas sobre um comando sem uma bandeira específica (o hífen é uma bandeira) e o mesmo comando com a bandeira.

Digitar SU - é o mesmo que digitar su -l; Ambos os comandos vão limpar a maioria das variáveis ​​de ambiente. Assim, antes de continuar com este artigo, vamos ver o que é uma variável de ambiente.

Variáveis ​​de ambiente no Linux:

As variáveis ​​de ambiente são valores usados ​​para definir características do ambiente em que os processos da concha e seus processos filhos estão sendo executados, por exemplo, os processos usam a variável de ambiente $ shell para conhecer o shell em uso (Bash, Zsh, etc.).

O sistema possui muitas variáveis; Este artigo se concentrará nessas variáveis ​​afetadas quando usarmos o su comando.

Para ver todas as variáveis ​​em seu sistema, você pode executar o exportar comando como mostrado abaixo.

exportar

Como você vê na captura de tela acima, existem muitas variáveis ​​em nosso sistema. Vamos nos concentrar nas variáveis ​​específicas LAR, CONCHA, DO UTILIZADOR, LogName, e CAMINHO.

A primeira variável que veremos é CAMINHO. Os valores dessa variável de ambiente são úteis para o sistema saber onde encontrar os comandos ou programas para executar. A variável de ambiente do sistema padrão CAMINHO é definido no /etc/perfil arquivo. As variáveis ​​de caminho dos usuários estão localizados em seus diretórios domésticos em ~/.perfil.

Para aprender seus valores de variável de ambiente de caminho, você pode usar o eco comando seguido pelo $ Símbolo e a variável de ambiente que você deseja verificar, neste caso, CAMINHO, como mostrado no exemplo abaixo.

eco $ caminho

Como você pode ver, o sistema retorna as variáveis ​​de ambiente definidas para o nosso sistema saber onde pesquisar e encontrar os comandos que queremos executar.

A segunda variável de ambiente explicada neste artigo é a variável shell. O valor dessa variável informa ao sistema qual shell estamos usando, se bash, zsh, ksh, etc.

Para ver o valor da sua variável de ambiente de shell, repita a etapa explicada anteriormente, substituindo $ path por $ shell, conforme mostrado na captura de tela abaixo.

eco $ shell

E como você pode ver, a concha é bash. É assim que nosso sistema sabe o que estamos usando, com o valor mostrado acima.

Outra variável de ambiente importante no Linux é $ Home. Este valor indica qual é o diretório inicial do usuário. Para aprender esse valor, você pode executar o comando abaixo.

eco $ em casa

A variável de ambiente.

eco $ logname

O valor da variável de ambiente de usuário é o ID do usuário, o mesmo que $ logname.

eco $ usuário

As variáveis ​​de ambiente explicadas acima são as afetadas pelo su comando quando o hífen ou o -eu sinalizador são adicionados.

Diferença entre os comandos "su" e "su -":

A diferença entre o su comando sem bandeiras e su com um hífen ou -eu O comando sem sinalizadores mantém suas variáveis ​​de ambiente e apenas altera o usuário.

Quando usado com hífens ou o -eu bandeira, a maioria das variáveis ​​ambientais são limpas.

O próximo exemplo mostra o Linuxhint Mudança de usuário para root usando su sem opções.

Então, depois de verificar a variável de ambiente $ logname, vemos que ela permanece como Linuxhint e não raiz.

su
eco $ logname

Ao contrário do exemplo anterior, se o hífen for implementado, ele será atualizado para root ao verificar a variável $ logname.

su -
eco $ logname

Vamos tentar o mesmo com a variável de ambiente de usuário.

su
eco $ usuário

Como você pode ver, ao fazer su como Linuxhint Para mudar para root e verificar a variável de usuário $, ela permanece como Linuxhint.

Ao contrário do exemplo anterior, se implementar o hífen, a variável $ user será limpa e atualizada como mostrado abaixo.

su -
eco $ usuário

Para encerrar este tutorial, este último exemplo mostra o -eu A bandeira faz exatamente o mesmo que o hífen.

su -l
eco $ logname
eco $ usuário

Conclusão:

Variáveis ​​de ambiente são um conceito básico que qualquer usuário do Linux deve saber. Depois de entender a função deles, você pode facilmente perceber a diferença entre o su comando sem e com o -eu bandeira (que é o mesmo que o hifenizado su). Se você gostou deste tutorial, pode querer ler os privilégios de gerenciamento de sudo no Linux.

Espero que este artigo mostrando a diferença entre “su" e "su -Foi útil. Continue seguindo este blog para mais tutoriais e dicas do Linux.