Якщо ви не можете запустити, 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файл. Вихід і вхід і зроблено!