Ilekroć uruchamiam sudo su
z mojego normalnego zsh
(który używa frameworka oh-my-zsh ), sh
domyślnie jestem zmuszony używać starej powłoki Bourne'a ( ) (oczywiście; jest to standardowe zachowanie w większości * podobnych do nix systemów). Jeśli uruchomię się zsh
od wewnątrz sh
po uruchomieniu sudo su
, otrzymam powłokę Z, ale bez ulepszeń od oh-my-zsh.
Czy jest jakiś sposób, aby zmienić sudo su
uruchamianie powłoki zsh
? Jeśli tak, to czy możliwe jest również zsh
uruchomienie tego wystąpienia oh-my-zsh
?
Używam OS X 10.8.4.
Na stronie
su
podręcznika możesz to zrobić na dwa sposoby.Pierwszą metodą jest po prostu użycie flagi
-s
lub--shell
(zakładając, że używasz systemu operacyjnego opartego na * NIX z wersjąsu
obsługującą ten argument), a następnie ścieżki do wybranej powłoki. Jeśli nie można znaleźć przekazanej powłoki,su
powraca do następującej metody, a jeśli jej nie powiedzie się, nastąpi próba jej wywołania/bin/sh
.Na przykład możesz wymusić
su
uruchomieniezsh
(zakładając, że istnieje/bin/zsh
) w:Druga metoda polega na zmodyfikowaniu domyślnej powłoki określonej dla
root
użytkownika ( ostrożnie! ). Można to zrobić, edytując plik/etc/passwd
i zmieniając powłokę określoną dlaroot
użytkownika. Aby zobaczyć, jaka powłoka jest domyślnie określona, możesz uruchomić następującą komendę (zakładając, że superużytkownikiem jest root):Polecenie powinno wypisać coś podobnego
root:x:0:0:root:/root:/bin/bash
. Możesz po prostu zmienić/bin/bash
(lub cokolwiek, co jest ustawione w systemie), aby wskazywałozsh
zamiast tego.źródło
sudo su -s /bin/zsh
(lub użycie--shell
) zwracasu: illegal option -- s
. Jestem na OS X 10.8.4; czy OS X przyjmuje inne polecenie?cat /etc/shells
? Technicznie uruchamiane będą tylko powłoki dozwolone w tym pliku, chociaż stronasu
mówi, że nie powinno to mieć znaczenia, jeślisu
zostanie wywołane przez root: Scat /etc/shells
zwraca/bin/zsh
jako akceptowalną powłokę.Bardziej czystym sposobem, który ochroni również twój system na wypadek wysadzenia twojej niestandardowej powłoki, jest utworzenie pliku .profile w katalogu głównym root w /:
Po prostu zmień ścieżkę do żądanej powłoki zamiast bash.
źródło
Można to łatwo zrobić za pomocą
chpass
:źródło