Toutes mes excuses à l'avance si cette question va ennuyer tout le monde comme j'apprécie, elle a été posée de diverses manières plusieurs fois auparavant. Soyez assuré, j'ai lu les archives et j'ai essayé au moins certaines des suggestions, mais je ne parviens toujours pas à résoudre le problème (simple). J'espère que quelqu'un peut fournir une réponse et je peux me sentir convenablement humilié. Pour info, pour éviter toute ambiguïté, je vais utiliser des chemins absolus plutôt que relatifs.
Lorsque je me connecte, je le fais en tant qu'utilisateur adam
. Les alias /Users/adam/.bash_profile
sont chargés et je peux les utiliser immédiatement après avoir tiré un terminal. Je n'utilise pas de .bashrc
fichier et ça va.
De temps en temps, je passe à root en tapant su
dans le terminal puis en entrant mon mot de passe. L'invite change et je suis maintenant root. Ma question est la suivante: immédiatement après être devenu root, mon profil root bash peut-il être chargé sans que je doive source manuellement le fichier de profil? La raison pour laquelle je sais que cela ne se produit pas automatiquement est que j'ai les mêmes alias dans mon fichier de profil racine et dans mon /Users/adam/.bash_profile
. Après être devenu utilisateur root, sauf si je tape source [root_profile_file]
, ils ne fonctionnent pas. J'ai essayé de configurer les permutations suivantes, puis de passer à root via le terminal, mais aucune ne source automatiquement le profil / les alias (remarque, je n'ai aucune des options ci-dessous configurées simultanément, donc je ne pense pas que je '' m confondre le système):
Option 1: mettre mes alias/etc/profile
Option 2:
- dans
/etc/profile
, insérer[ -r /etc/bashrc ] && . /etc/bashrc
- mettre mes alias
/etc/bashrc
Option 3:
- dans
/etc/bash_profile
, insérer[ -r /etc/bashrc ] && . /etc/bashrc
- mettre mes alias
/etc/bashrc
Option 4: mettre mes alias/var/root/.profile
Option 5:
- dans
/var/root/.profile
, insérer[ -r /var/root/.bashrc ] && . /var/root/.bashrc
- mettre mes alias
/var/root/.bashrc
Option 6:
- dans
/var/root/.bash_profile
, insérer[ -r /var/root/.bashrc ] && . /var/root/.bashrc
- mettre mes alias
/var/root/.bashrc
Veuillez noter, avec l'un des éléments ci-dessus, si je passe à root et que je tape source root_profile_file
les alias sont chargés, mais uniquement si je source effectivement le fichier manuellement. J'ai peut-être totalement mal compris le fonctionnement de bash et il n'est pas possible de générer automatiquement un fichier de profil après le passage à root, mais j'espère qu'il existe une solution simple. Merci d'avance à tous ceux qui ont pris le temps de lire ce message.
su
travailler commeroot
. Il existesudo
à cet effet, ou vous pouvez travailler de telle manière que vous n'avez pas du tout besoin des privilèges root.En fait root utilise
/bin/sh
(vieux shell bourne),.bash_profile
et.bashrc
est lu par bash.Cela devient difficile car ces fichiers peuvent utiliser des fonctionnalités non disponibles dans
sh
. Même si voussource .bashrc
ousource .bash_profile
, vous aurez toujours des problèmes avec des fonctions complexes par exemple.Une façon de résoudre ce problème consiste à exécuter
pour changer
root
le shell debash
.la source
/bin/sh
utilise le/var/root/.profile
fichier. Crédit à la réponse deQuand je le dois absolument, moi
sudo bash
qui me fait rooter mais avec l'environnement de JRobert. Mon .bashrc contient:, pour que l'éblouissement de la racine me revienne en rouge pour souligner que je suis maintenant (plus) vulnérable à la mienne - ne laissez pas tomber la pagaie].
la source
J'utilise
sudo -i
pour passer à l'utilisateur root. Dans ce cas, la configuration du shell est lue/var/root/.profile
.la source
En général, je déconseille
su
car c'est dangereux, cherchez-le et vous savez pourquoi. Sur votre question, le compte root fonctionne de la même manière que votre compte: il source ~ / .bash_profile et / ou ~ / .bashrc. Je ne sais pas lequel, mais mon intuition penche vers ~ / .bashrc , donc vous voudrez peut-être y mettre vos alias. Voici une suggestion:la source
sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash
Seulement cela fonctionne! J'ai essayé de mettre monexport PS1=...
à l'un de tous ces fichiers ci-dessus. / etc / profile, / etc / bashrc /var/root/.bashrc /var/root/.profile /var/root/.bash_profile.De tous ces fichiers
/bin/sh
shell, ne lit pas les informations! (uniquement bash) (Mac OS El Capitan). Et j'ai dû changer de shell en bash.Fonctionne également
"su -"
aussi. (avec ce shell lit le/var/root/.profile
fichier)la source
Une façon de résoudre ce problème consiste à exécuter ce qui suit pour basculer le shell de root sur bash:
Cette solution a également résolu mon problème.
la source
si vous n'avez qu'un seul utilisateur «par défaut» et l'utilisateur root, vous pouvez mettre
alias su="su -"
sur .bash_profile de l'utilisateur «par défaut» et vous obtenez l'effet que vous voulez. Fonctionne et sans choses hacky.la source