Якщо ви не можете запустити, chsh
оскільки у вас немає привілеїв адміністратора, поговоріть із тим, хто це робить .
Швидше за все, ви не можете використовувати chsh
як некореневу, оскільки система, яку ви використовуєте, налаштована так, що chsh
не працюватиме, наприклад, оскільки система використовує NIS або LDAP, а не просто /etc/passwd
файл. Або, можливо, адміністратор вашої системи просто хоче підтримувати деякий контроль.
Порядок зміни оболонки залежить від політики вашої організації. Може існувати локальна команда, яка робить те, що chsh
зазвичай робить. Або вам може знадобитися подати квиток на підтримку, який вимагає зміни оболонки.
Більшість інших відповідей хороші, але якщо ваші адміністратори сприятливо реагують, ви, можливо, не захочете зламати хакерські сценарії. Я, мабуть, просто посилаюся zsh -l
вручну після входу в систему, поки адміністратор не захоче оновити мій обліковий запис.
Ще одна річ, яку слід пам’ятати: іноді різні оболонки можуть використовувати одні й ті ж файли запуску. Наприклад, sh
і bash
може одночасно виконувати $HOME/.profile
, і csh
та tcsh
може одночасно виконувати $HOME/.login
і $HOME/.cshrc
(хоча оболонки конкретні завантажувальні файли , такі як .bashrc
, .bash_profile
і .tcshrc
можуть перевизначати). Якщо ваша оболонка за замовчуванням є, /bin/csh
і ви її хочете використовувати /bin/tcsh
, оновлення її .login
для виклику /bin/tcsh -l
може створити нескінченний цикл. zsh
не трапляється виконувати спеціальні bash
файли запуску, тому це не є проблемою для вас.
Більшість снарядів встановити змінні , які визначають , яку оболонку ви використовуєте ( $BASH_VERSION
, $tcsh
, $ZSH_VERSION
). Якщо ви збираєтеся написати код запуску, щоб викликати бажану оболонку, це не погана ідея, щоб укласти її в if
так, що вона виконується лише в тому випадку, якщо ви вже не працюєте з цією оболонкою. Використання коду з відповіді konsolebox :
if [ "${ZSH_VERSION:-unset}" = "unset" ] ; then
export SHELL=/bin/zsh
exec /bin/zsh -l
fi
(Додане ускладнення перевірки, "${ZSH_VERSION:-unset}"
а не просто "$ZSH_VERSION"
дозволяє перед вами можливість, що ви зробили set -o unset
, варіант, який викликає посилання на невизначену змінну як помилку.)
zsh
у.bashrc
файл. Вихід і вхід і зроблено!