Zmień wiersz polecenia terminala dla użytkownika root w Sierra


0

Mogę bez problemu zmienić wiersz polecenia bash dla terminala dla zwykłego użytkownika. (W moim przypadku zmodyfikowałem zmienną $ PS1 w / etc / bashrc.) Jednak ta zmiana nie modyfikuje wiersza poleceń, gdy ktoś podnosi uprawnienia do rootowania sudo -s.

Czy ktoś wie, gdzie preferencje wiersza polecenia są przechowywane na komputerze macOS Sierra (10.12.5) dla użytkownika administratora, który podniósł swoje uprawnienia do rootowania sudo -s?

Próbowałem zmodyfikować następujące pliki ...

  • /var/root/.bash_profile
  • /var/root/.bash_rc
  • / var / root / bash_rc
  • /var/root/.profile
  • ~ / .profile

Próbowałem także użyć polecenia export PS1="Some prompt here# ", które tymczasowo zmienia monit o rootowanie, ale nie blokuje się ono po zakończeniu sesji i uruchomieniu nowej.


Czy dotyczy to komputera z włączonym kontem głównym?
fd0

Nie, konto root nie jest włączone. Usiłuję uzyskać monit o zmianę, gdy wykonuję „sudo -s” od administratora.
Tim Dearborn,

Odpowiedzi:


1

Z sudoinstrukcji:

-s, --shell    Run the shell specified by the SHELL environment variable if it is set or the shell
               specified by the invoking user's password database entry.  If a command is specified, it
               is passed to the shell for execution via the shell's -c option.  If no command is
               specified, an interactive shell is executed.

Interaktywna powłoka odczytuje wywołującego użytkownika .bashrc. Tak więc rozwiązanie Tony'ego Williamsa zadziałałoby, jeśli jest w twoim .bashrc. Ale rozwiązanie da4 powinno również działać, jeśli zostanie umieszczone w twoim .bash_profile.


Dziękuję Ci. Modyfikacja ~ / .bashrc zmieniła monit root podczas używania sudo -s.
Tim Dearborn,

2

Dodaj SUDO_PS1zmienną środowiskową do swojej, ~/.bash_profilea następnie exportdo zmiennej, na przykład:

export SUDO_PS1="\[\h:\w\] \u\\$ "

Pamiętaj jednak, że spowoduje to zmianę monitu użytkownika root, gdy pojawi się on po podniesieniu uprawnień za pośrednictwem sudo.

Dobra lista promptzmiennych znajduje się tutaj.


Powyższe działa, ale tylko tymczasowo. Jeśli zamknę terminal, a następnie uruchomię go ponownie, zmiany nie zostaną zapisane.
Tim Dearborn,

Jeśli po prostu wpiszesz to exportw istniejącą powłokę, to tak, zmiany nie zostaną zachowane. Musisz dodać to do swojego ~/.bash_profile. Testowane i potwierdzone 10.11.6.
da4

1

Zakładam, że tak naprawdę nie logujesz się na komputerze Mac, rootponieważ włączenie logowania roota jest naprawdę złą rzeczą .

Używasz więc polecenia sudo -sdo otwarcia powłoki roota z własnego loginu. W tych okolicznościach prowadzony profil jest Twój. Najlepszym sposobem na wprowadzenie jakichkolwiek zmian, takich jak monit, jest na przykład użycie ifw swoim profilu

# color prompt and make root red
if [ `id -u` = 0 ]
then
    PS1="\[\033[31m\]\h:\W \u\$\[\033[0m\] "
else
    PS1="\[\033[34m\]\h:\w \u\$\[\033[0m\] "
fi

W tym przykładzie najwyższy PS1 jest dla roota i ustawia monit na czerwony, a drugi PS1 jest dla każdego innego użytkownika, np. Ciebie. Możesz także wprowadzić dowolne inne zmiany środowiska if.


Tak, masz rację. Loguję się jako administrator i podnoszę swoje uprawnienia do rootowania za pomocą „sudo -s”. Twoja odpowiedź nie zmienia monitu, gdy mam uprawnienia do rootowania. Głosowałem za tym, ponieważ bardzo podoba mi się szybka zmiana kolorów.
Tim Dearborn,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.