chsh管理者権限がないために実行できない場合は、管理者に相談してください。
使用しchshているシステムchshが機能しないように構成されているため、たとえば、システムが/etc/passwdファイルだけでなくNISまたはLDAPを使用しているため、非ルートとして使用できない可能性があります。または、システムの管理者が制御を維持したいだけかもしれません。
シェルを変更する手順は、組織のポリシーによって異なります。chsh通常の処理を行うローカルコマンドが存在する場合があります。または、シェルの変更を要求するサポートチケットを送信する必要がある場合があります。
他のほとんどの答えは良いですが、管理者が適度に敏感であれば、スタートアップスクリプトのハッキングを気にしたくないかもしれません。zsh -l管理者がアカウントの更新に取りかかるまで、ログイン後に手動で呼び出すだけです。
留意すべきもう1つのこと:異なるシェルが同じスタートアップファイルを使用できる場合があります。たとえば、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のファイル。ログアウトしてログインして完了!