Entschuldigung im Voraus, wenn diese Frage jeden nervt, wie ich es schätze, wurde sie schon oft auf verschiedene Arten gestellt. Seien Sie versichert, ich habe die Archive gelesen und habe zumindest einige der Vorschläge ausprobiert, kann das (einfache) Problem jedoch immer noch nicht lösen. Hoffentlich kann jemand eine Antwort geben und ich kann mich demütig fühlen. Zur Vermeidung von Mehrdeutigkeiten verwende ich eher absolute als relative Pfade.
Wenn ich mich anmelde, tue ich dies als Benutzer adam
. Die Aliase in /Users/adam/.bash_profile
sind geladen und ich kann sie sofort nach dem Hochziehen eines Terminals verwenden. Ich benutze keine .bashrc
Datei und das ist in Ordnung.
Hin und wieder wechsle ich zu root, indem ich su
in das Terminal tippe und dann mein Passwort eingebe. Die Eingabeaufforderung ändert sich und ich bin jetzt Root-Benutzer. Meine Frage lautet: Kann mein Root-Bash-Profil sofort nach dem Root-Status geladen werden, ohne dass ich die Profildatei manuell erstellen muss? Der Grund, warum ich weiß, dass dies nicht automatisch geschieht, ist, dass ich dieselben Aliase in meiner Stammprofildatei und in meiner habe /Users/adam/.bash_profile
. Nachdem ich Root-Benutzer geworden bin source [root_profile_file]
, funktionieren sie nur , wenn ich sie eingebe. Ich habe versucht, die folgenden Permutationen einzurichten und dann über das Terminal auf root zu wechseln, aber keine von ihnen gibt das Profil / die Aliase automatisch aus (beachten Sie, dass ich keine der folgenden Optionen gleichzeitig eingerichtet habe, also glaube ich nicht, dass ich m das System verwirren):
Option 1: Geben Sie meine Aliase ein/etc/profile
Option 2:
- in
/etc/profile
einfügen[ -r /etc/bashrc ] && . /etc/bashrc
- lege meine Aliase ein
/etc/bashrc
Option 3:
- in
/etc/bash_profile
einfügen[ -r /etc/bashrc ] && . /etc/bashrc
- lege meine Aliase ein
/etc/bashrc
Option 4: Gib meine Aliase ein/var/root/.profile
Option 5:
- in
/var/root/.profile
einfügen[ -r /var/root/.bashrc ] && . /var/root/.bashrc
- lege meine Aliase ein
/var/root/.bashrc
Option 6:
- in
/var/root/.bash_profile
einfügen[ -r /var/root/.bashrc ] && . /var/root/.bashrc
- lege meine Aliase ein
/var/root/.bashrc
Bitte beachten Sie, dass bei jedem der oben genannten source root_profile_file
Fälle die Aliase geladen werden , wenn ich zu root wechsle und dann eingebe, aber nur, wenn ich die Datei tatsächlich manuell als Quelle habe. Vielleicht habe ich völlig falsch verstanden, wie bash funktioniert, und es ist nicht möglich, eine Profildatei nach dem Wechsel zu root automatisch zu erstellen, aber ich hoffe, dass es eine einfache Lösung gibt. Vielen Dank im Voraus an alle, die sich die Zeit genommen haben, diese Nachricht zu lesen.
su
nochroot
. Es gibtsudo
für diesen Zweck, oder Sie können so arbeiten, dass Sie überhaupt keine Root-Rechte benötigen.Tatsächlich verwendet root
/bin/sh
(alte Borowski-Shell).bash_profile
und.bashrc
wird von bash gelesen.Es wird schwierig, da diese Dateien möglicherweise Funktionen verwenden, die in nicht verfügbar sind
sh
. Selbst wenn Siesource .bashrc
odersource .bash_profile
, werden Sie zum Beispiel immer noch Probleme mit komplexen Funktionen haben.Ein Weg, dies zu lösen, ist zu rennen
die
root
Schale wechseln zubash
.quelle
/bin/sh
verwendet/var/root/.profile
Datei. Dank an @ Matics AntwortWenn ich unbedingt muss,
sudo bash
macht mich das root aber mit JRoberts Umgebung. Mein .bashrc enthält:, um die Root-Eingabeaufforderung auf ROT zurückblicken zu lassen, um zu betonen, dass ich jetzt (mehr) anfällig für meine eigenen bin - Lassen Sie das Paddel nicht fallen].
quelle
Ich benutze
sudo -i
, um zum Root-Benutzer zu wechseln. In diesem Fall wird die Shell-Konfiguration gelesen/var/root/.profile
.quelle
Im Allgemeinen rate ich davon ab,
su
da es gefährlich ist. Suchen Sie einfach danach und Sie wissen warum. Bei Ihrer Frage funktioniert das Root-Konto genauso wie Ihr Konto: Es bezieht ~ / .bash_profile und / oder ~ / .bashrc. Ich weiß nicht, welche, aber meine Intuition ist auf ~ / .bashrc ausgerichtet . Vielleicht möchten Sie versuchen, Ihre Aliase dort abzulegen . Hier ist ein Vorschlag:quelle
sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash
Nur das funktioniert! Ich habe versucht, meineexport PS1=...
Datei in eine der oben genannten Dateien zu kopieren. / etc / profile, / etc / bashrc /var/root/.bashrc /var/root/.profile /var/root/.bash_profile.Aus all diesen Dateien
/bin/sh
Shell, liest keine Informationen! (nur Bash) (Mac OS El Capitan). Und ich musste die Schale wechseln, um zu schlagen.Funktioniert auch
"su -"
. (mit dieser Shell wird die/var/root/.profile
Datei gelesen )quelle
Eine Möglichkeit, dies zu lösen, besteht darin, Folgendes auszuführen, um die Shell von root auf bash umzustellen:
Diese Lösung hat auch mein Problem behoben.
quelle
Wenn Sie nur einen "Standard" -Benutzer und den Root-Benutzer haben, können Sie das
alias su="su -"
.bash_profile des "Standard" -Benutzers anlegen und erhalten den gewünschten Effekt. Funktioniert und ohne hackige Sachen.quelle