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
のファイル。ログアウトしてログインして完了!