su vs. su -

su vs. su -
La différence entre le su et le trait d'union su - Les commandes sont le su La commande sans arguments conserve presque toutes les variables d'environnement appartenant à l'utilisateur d'origine. Contrairement à cela, le trait d'union su - La commande efface la plupart des variables d'environnement.

Nous ne parlons pas de deux commandes différentes mais d'une commande sans drapeau spécifique (le trait d'union est un drapeau) et la même commande avec le drapeau.

Taping su - est le même que la saisie su -l; Les deux commandes effaceront la plupart des variables d'environnement. Ainsi, avant de poursuivre cet article, voyons ce qu'est une variable d'environnement.

Variables d'environnement dans Linux:

Les variables d'environnement sont des valeurs utilisées pour définir les caractéristiques de l'environnement dans lequel les processus de shell et leurs processus d'enfants sont en cours d'exécution, par exemple, les processus utilisent la variable d'environnement $ shell pour connaître le shell utilisé (bash, zsh, etc.).

Le système a de nombreuses variables; Cet article se concentrera sur les variables affectées lorsque nous utilisons su commande.

Pour voir toutes les variables de votre système, vous pouvez exécuter le exporter Commande comme indiqué ci-dessous.

exporter

Comme vous le voyez dans la capture d'écran ci-dessus, il existe de nombreuses variables dans notre système. Nous nous concentrerons sur les variables spécifiques MAISON, COQUILLE, UTILISATEUR, Logiciel, et CHEMIN.

La première variable que nous verrons est CHEMIN. Les valeurs de cette variable d'environnement sont utiles pour que le système sache où trouver les commandes ou les programmes à exécuter. La variable d'environnement du système par défaut CHEMIN est défini dans le / etc / profil déposer. Les variables de chemin des utilisateurs sont situées dans leurs répertoires domestiques à ~ /.profil.

Pour apprendre les valeurs variables de votre environnement de chemin, vous pouvez utiliser le écho commande suivie par le $ Symbole et variable d'environnement que vous souhaitez vérifier, dans ce cas, CHEMIN, Comme indiqué dans l'exemple ci-dessous.

Echo $ Path

Comme vous pouvez le voir, le système renvoie les variables d'environnement définies pour que notre système sache où rechercher et trouver les commandes que nous voulons exécuter.

La deuxième variable d'environnement expliquée dans cet article est la variable Shell. La valeur de cette variable indique au système quel shell nous utilisons, si bash, zsh, ksh, etc.

Pour voir la valeur de votre variable d'environnement Shell, répétez l'étape expliquée précédemment, en remplaçant $ Path par $ shell, comme indiqué dans la capture d'écran ci-dessous.

Echo $ shell

Et comme vous pouvez le voir, la coquille est bash. C'est ainsi que notre système sait quel shell nous utilisons, avec la valeur indiquée ci-dessus.

Une autre variable d'environnement importante dans Linux est $ Home. Cette valeur indique ce qu'est le répertoire domestique de l'utilisateur. Pour apprendre cette valeur, vous pouvez exécuter la commande ci-dessous.

Echo $ Home

La variable d'environnement $ Logname est l'utilisateur dans lequel vous êtes connecté en tant que.

Echo $ Logname

La valeur de variable de l'environnement de l'utilisateur $ est l'ID utilisateur, qui est le même que $ Logname.

Echo $ utilisateur

Les variables d'environnement expliquées ci-dessus sont celles affectées par le su commande lorsque le trait d'union ou le -l Le drapeau est ajouté.

Différence entre les commandes «Su» et «Su -»:

La différence entre le su commande sans drapeaux et su avec un trait d'union ou -l La commande sans drapeaux conserve vos variables d'environnement et ne change que l'utilisateur.

Lorsqu'il est utilisé avec des traits de traits ou le -l drapeau, la plupart des variables d'environnement sont éliminées.

L'exemple suivant montre le linuxhint Le passage de l'utilisateur à root en utilisant su sans options.

Ensuite, après avoir vérifié la variable d'environnement $ logname, nous voyons qu'il reste comme linuxhint et pas root.

su
Echo $ Logname

Contrairement à l'exemple précédent, si le trait d'union est implémenté, il sera mis à jour pour root lors de la vérification de la variable Logname $.

su -
Echo $ Logname

Essayons la même chose avec la variable de l'environnement utilisateur $.

su
Echo $ utilisateur

Comme vous pouvez le voir, lorsque vous faites Su comme linuxhint Pour changer pour root et vérifier la variable utilisateur $, il reste comme linuxhint.

Contrairement à l'exemple précédent, si la mise en œuvre du trait d'union, la variable utilisateur $ sera effacée et mise à jour comme indiqué ci-dessous.

su -
Echo $ utilisateur

Pour terminer ce tutoriel, ce dernier exemple montre le -l Le drapeau fait exactement la même chose que le trait d'union.

su -l
Echo $ Logname
Echo $ utilisateur

Conclusion:

Les variables d'environnement sont un concept de base que tout utilisateur Linux doit connaître. Une fois que vous comprenez leur fonction, vous pouvez facilement réaliser la différence entre le su commande sans et avec le -l drapeau (qui est le même que le trait d'union su). Si vous avez aimé ce tutoriel, vous voudrez peut-être lire la gestion des privilèges sudo sur Linux.

J'espère que cet article montrant la différence entre «su" et "su -"A été utile. Continuez à suivre ce blog pour plus de tutoriels et de conseils Linux.