web-dev-qa-db-fra.com

Comment partager des alias bash entre l'utilisateur non-root bash et le shell ouvert par "Sudo -i"?

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/passwdLe 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.

3
Karl Richter

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/aliasesavec 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.

3
Sergiy Kolodyazhnyy