web-dev-qa-db-ja.com

ユーザーがインストールしたシェルを使用しますか?

シェルをホームディレクトリにインストールされているものに変更するにはどうすればよいですか?私は自分のホームディレクトリに新しいzshをインストールしました。

>> which zsh
>> /home/myname/bin/zsh

/ etc/shellsにリストされていません(許可がないため、リストされません)。どうすればインストールできますか?

chsh -s $(which zsh) myname
Changing Shell for myname
Password: 
chsh: "/home/myname/bin/zsh" is not listed in /etc/shells
chsh: use -l option to see list
4
ash

/etc/shellsの要点は、管理者がユーザーがシェルとして設定するものを制御できるようにすることです。したがって、/etc/shellsにリストされていないシェルを設定すると、セキュリティホールになります。最善の解決策は、管理者にzshシステム全体をインストールするように依頼することですが、それが不可能な場合は、カスタムシェルを実行するように現在のシェル(bashを想定)を構成するしかありません。これを行うには、以下を~/.bash_profileに追加します(これはログインシェルにのみ影響しますが、~/.bashrcはスクリプトを壊す可能性のある非ログインシェルにも影響します)。

exec ~/bin/zsh
5
mgorven