Z góry przepraszam, jeśli to pytanie zirytuje wszystkich, jak doceniam, wiele razy zadawano je na różne sposoby. Zapewniam, że przeczytałem archiwa i wypróbowałem przynajmniej niektóre z sugestii, ale nadal nie mogę rozwiązać (prostego) problemu. Mam nadzieję, że ktoś może udzielić odpowiedzi i czuję się odpowiednio upokorzony. Do waszej informacji, aby uniknąć wszelkich dwuznaczności, zamierzam używać ścieżek bezwzględnych, a nie względnych.
Kiedy się loguję, robię to jako użytkownik adam
. Aliasy w /Users/adam/.bash_profile
są ładowane i mogę ich użyć natychmiast po wyciągnięciu terminala. Nie używam .bashrc
pliku i jest w porządku.
Od czasu do czasu przełączam się na rootowanie, wpisując su
się w terminal, a następnie wprowadzając hasło. Monit zmienia się i jestem teraz użytkownikiem root. Moje pytanie brzmi: czy zaraz po uzyskaniu uprawnień roota mogę załadować mój profil root bash bez konieczności ręcznego pobierania pliku profilu? Wiem, że nie dzieje się to automatycznie, ponieważ mam te same aliasy w moim pliku profilu głównego i moim /Users/adam/.bash_profile
. Po zostaniu użytkownikiem root, chyba że wpisuję source [root_profile_file]
, nie działają. Próbowałem skonfigurować następujące permutacje, a następnie przełączyć się na rootowanie za pośrednictwem terminala, ale żadna z nich nie automatycznie pobiera profilu / aliasów (uwaga: nie mam skonfigurowanych żadnej z poniższych opcji jednocześnie, więc nie sądzę, że „ mylący system):
Opcja 1: wstaw moje aliasy/etc/profile
Opcja 2:
- w
/etc/profile
, wstaw[ -r /etc/bashrc ] && . /etc/bashrc
- wstaw moje aliasy
/etc/bashrc
Opcja 3:
- w
/etc/bash_profile
, wstaw[ -r /etc/bashrc ] && . /etc/bashrc
- wstaw moje aliasy
/etc/bashrc
Opcja 4: wstaw moje aliasy/var/root/.profile
Opcja 5:
- w
/var/root/.profile
, wstaw[ -r /var/root/.bashrc ] && . /var/root/.bashrc
- wstaw moje aliasy
/var/root/.bashrc
Opcja 6:
- w
/var/root/.bash_profile
, wstaw[ -r /var/root/.bashrc ] && . /var/root/.bashrc
- wstaw moje aliasy
/var/root/.bashrc
Zauważ, że w którymkolwiek z powyższych, jeśli przełączę się na root, a następnie source root_profile_file
napiszę, aliasy są ładowane, ale tylko wtedy, gdy rzeczywiście ręcznie źródłem pliku. Być może całkowicie źle zrozumiałem, jak działa bash i nie można automatycznie pobrać pliku profilu po przejściu na root, ale mam nadzieję, że istnieje proste rozwiązanie. Z góry dziękuję wszystkim, którzy poświęcili czas na przeczytanie tej wiadomości.
su
nie powinieneś, ani nie pracować jakoroot
. Ma tosudo
na celu lub możesz pracować w taki sposób, że wcale nie potrzebujesz uprawnień roota.Właściwie używa roota
/bin/sh
(stara powłoka Bourne'a).bash_profile
i.bashrc
są odczytywane przez bash.Staje się to trudne, ponieważ te pliki mogą korzystać z funkcji niedostępnych w
sh
. Nawet jeśli tysource .bashrc
lubsource .bash_profile
nadal będziesz mieć problem ze złożonymi funkcjami, na przykład.Jednym ze sposobów rozwiązania tego jest uruchomienie
zmienić
root
powłokę nabash
.źródło
/bin/sh
używa/var/root/.profile
pliku.Kiedy absolutnie muszę,
sudo bash
co sprawia, że jestem rootem, ale ze środowiskiem JRobert. Mój .bashrc zawiera:, aby przywrócić mi rdzawe spojrzenie w RED, aby podkreślić, że jestem teraz (bardziej) podatny na własne [wybierz jeden: zuchwałość, głupota, skłonności do grubych palców, niechęć do udzielania dobrych rad, w górę s.creek - nie upuszczaj wiosła].
źródło
Używam,
sudo -i
aby przejść do użytkownika root. W takim przypadku konfiguracja powłoki jest odczytywana/var/root/.profile
.źródło
Ogólnie odradzam,
su
ponieważ jest to niebezpieczne, po prostu poszukaj go, a wiesz, dlaczego. Jeśli chodzi o twoje pytanie, konto root działa w taki sam sposób, jak konto: źródło ~ / .bash_profile i / lub ~ / .bashrc. Nie wiem, który z nich, ale moja intuicja skłania się w kierunku ~ / .bashrc , więc możesz spróbować umieścić tam swoje aliasy. Oto sugestia:źródło
sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash
Tylko to działa! Próbowałem umieścić mójexport PS1=...
plik w jednym z powyższych plików. / etc / profile, / etc / bashrc /var/root/.bashrc /var/root/.profile /var/root/.bash_profile.Ze wszystkich tych plików
/bin/sh
powłoki nie odczytuje informacji! (tylko bash) (Mac OS El Capitan). I musiałem zmienić shell na bash.Również
"su -"
działa zbyt. (z tą powłoką czyta/var/root/.profile
plik)źródło
Jednym ze sposobów rozwiązania tego jest uruchomienie następującego polecenia, aby przełączyć powłokę roota na bash:
To rozwiązanie rozwiązało również mój problem.
źródło
jeśli masz tylko jednego „domyślnego” użytkownika i użytkownika root, możesz umieścić
alias su="su -"
plik .bash_profile „domyślnego” użytkownika i uzyskasz pożądany efekt. Działa i bez hacków.źródło