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.

Tim Dearborn
źródło
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.

fd0
źródło
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.

da4
źródło
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.

Tony Williams
źródło
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,