J'ai un serveur Centos 5.5 qui a mes propres commandes d'alias pour mon compte. Quand je le fais, sudo bash
je peux toujours utiliser ces alias, je n'ai pas eu à ajouter les alias à la racine .bashrc
.
J'ai un autre serveur qui est Centos 6.5. Mais lorsque j'exécuterai sudo bash
, il n'utilisera pas mes alias de l'utilisateur sous lequel je suis connecté. Quelqu'un sait-il où je le configure pour inclure les alias de l'utilisateur auquel je suis connecté lorsque j'utilise sudo bash
?
sudo sudo -V
sortie etenv_keep
dans la page de manuel sudoers.Defaults !always_set_home
etDefaults !env_reset
`Réponses:
Ajoutez la ligne suivante à votre ~ / .bashrc:
Du manuel bash
Ainsi, Bash vérifie uniquement le premier mot d'une commande pour un alias, les mots après cela ne sont pas vérifiés. Cela signifie que dans une commande comme sudo ll, seul le premier mot (sudo) est vérifié par bash pour un alias, ll est ignoré. Nous pouvons dire à bash de vérifier le mot suivant après l'alias (c'est-à-dire sudo) en ajoutant un espace à la fin de la valeur d'alias.
la source
sudo
commande, par exemplesudo some_alias ...
, mais ce que OP demande, c'est comment faire pour que les alias définis pour son propre utilisateur fonctionnent après qu'il passe à un autre utilisateur en utilisantsudo
. Disons que j'aisome_alias
défini. Quand jesudo
à l'root
aidesudo su
, un nouvel environnement est créé et que l' alias est pas là défini. Il y a le-E
paramètre de lasudo
commande qui devrait exporter l'environnement mais il semble que les alias n'en font pas partie.Utilisez
sudo -E
, qui exportera votre environnement.la source
sudo -E bash
. Lorsqu'il est utilisé avecsu
assudo -E su
, les éléments définis dans l'utilisateur.bashrc
(alias, invite, etc.) ne sont pas conservés, même s'il semble que les variables d'environnement sont préservées dans les deux cas. Je ne sais pas exactement comment cela fonctionne.