Jeśli nie możesz uruchomić, chsh
ponieważ nie masz uprawnień administratora, porozmawiaj z kimś, kto ma uprawnienia .
Najprawdopodobniej nie można użyć go chsh
jako użytkownika innego niż root, ponieważ używany system jest skonfigurowany tak, chsh
aby nie działał, na przykład ponieważ system używa NIS lub LDAP, a nie tylko /etc/passwd
pliku. A może administrator twojego systemu chce po prostu zachować kontrolę.
Procedura zmiany powłoki zależy od zasad organizacji. Może istnieć polecenie lokalne, które robi to, co chsh
zwykle. Lub może być konieczne przesłanie zgłoszenia do pomocy technicznej z prośbą o zmianę powłoki.
Większość pozostałych odpowiedzi jest dobra, ale jeśli administratorzy reagują dość szybko, możesz nie chcieć kłopotać się włamywaniem skryptów startowych. Prawdopodobnie zsh -l
po zalogowaniu wywołam ręcznie, dopóki administrator nie zacznie aktualizować mojego konta.
Kolejna rzecz, o której należy pamiętać: czasami różne powłoki mogą korzystać z tych samych plików startowych. Na przykład, sh
a bash
może obie wykonać $HOME/.profile
, a csh
i tcsh
może zarówno wykonać $HOME/.login
i $HOME/.cshrc
(choć powłoka specyficzne pliki startowe, takie jak .bashrc
, .bash_profile
i .tcshrc
może zastąpić tych). Jeśli twoją domyślną powłoką jest /bin/csh
i chcesz użyć /bin/tcsh
, zaktualizowanie twojego .login
invoke /bin/tcsh -l
może stworzyć nieskończoną pętlę. zsh
nie zdarza się bash
uruchamiać plików startowych specyficznych dla użytkownika, więc nie stanowi to problemu.
Większość muszle ustawić zmienne, które identyfikują który Shell używasz ( $BASH_VERSION
, $tcsh
, $ZSH_VERSION
). Jeśli zamierzasz napisać kod startowy, aby wywołać preferowaną powłokę, nie jest złym pomysłem, aby umieścić go w if
tak, aby był wykonywany tylko wtedy, gdy nie korzystasz już z tej powłoki. Za pomocą kodu z odpowiedzi konsoli konsolebox :
if [ "${ZSH_VERSION:-unset}" = "unset" ] ; then
export SHELL=/bin/zsh
exec /bin/zsh -l
fi
(Dodana komplikacja sprawdzania "${ZSH_VERSION:-unset}"
zamiast tylko "$ZSH_VERSION"
pozwala na to, że już to zrobiłeś set -o unset
, opcję, która powoduje, że odwołanie do niezdefiniowanej zmiennej jest błędem).
zsh
w.bashrc
pliku. Wyloguj się i zaloguj i gotowe!