Je suis habitué à utiliser Sudo -i
et je n'ai pas défini de mot de passe root
, c.-à-d. su -
ne fonctionne pas. Je cherche un moyen de partager des alias bash
entre un utilisateur Shell (par exemple, celui qui est ouvert lorsque je lance gnome-terminal
a démarré en tant qu'utilisateur connecté au gestionnaire d'affichage) et le Shell ouvert par Sudo -i
.
Selon man Sudo
il s’agit d’un shell de connexion et, autant que cela puisse être, il devrait source ~/.profile
, c’est-à-dire /root/.profile
, mais mettre des alias dans /root/.profile
ne fonctionne pas. Seulement si j'exécute bash
dans le shell ouvert par Sudo -i
l'alias est disponible. Selon /etc/passwd
Le shell de root
est bash
et la variable Shell
le confirme (dans le shell démarré par Sudo -i
).
Je préférerais ne pas mettre les alias dans /etc/profile
parce que cela les exposerait à n'importe quel utilisateur et je veux seulement les avoir pour l'utilisateur du gestionnaire d'affichage et root
.
Le message associé Serverfault post suggère d'utiliser /etc/bashrc
, mais je recommanderais personnellement de créer le fichier /etc/Shell_aliases
(apparemment /etc/aliases
avec le paquet sendmail est déjà réservé), et le source à partir du fichier .bashrc
de votre utilisateur et de l'utilisateur root. De cette façon, vous pouvez redéfinir les alias globalement.
L’approche alternative indiquée dans ce article AskUbunt consiste à utiliser /etc/profile.d/00-aliases.sh
.
$ Sudo bash -c 'echo alias print_hello=\"echo 'HELLO\ ASKUBUNTU'\" > /etc/profile.d/00-aliases.sh '
$ Sudo -i
$ print_hello
HELLO ASKUBUNTU
Remarque secondaire ( pour les shells GUI, vous devrez vous déconnecter et vous connecter, car .profile
est recherché chaque fois que vous vous connectez, et Une fois que vous aurez chanté dans le système via l'écran de connexion graphique, il sera recherché, mais une seule fois. Tous les émulateurs de terminal ouverts sont ensuite considérés comme des coquilles interactives.