echo $0 を変更した後も、まだデフォルトのシェルを表示するのはなぜですか?

echo $0 を変更した後も、まだデフォルトのシェルを表示するのはなぜですか?

修正後もなぜ引き続き表示されますかecho $0-bashシェルを次に変更しましたが、zsh試してもecho $0「-」が表示されます。

私がしたことは...次を使って利用可能なシェルを確認しました。

cat /etc/shells

/bin/bash /bin/zsh ... が表示されます。

一度chsh -s /bin/zshケースを変えました。

答え1

これまで、chshこれが実際に何をしているのかを明確に説明する答えやコメントはありません。

chsh現在のシェルを変更しようとしているようです。習慣。ログインシェルがどのシェルであるか、オペレーティングシステムに通知するいくつかのレコードのみが変更されます。このレコードは、ログインシェルが開始される直前に計算を開始します。現在のシェル(または他の開始シェル)は影響を受けません。他のシェルに変換されず、シャットダウンしたり、他のシェルに置き換えられません。

「ログアウト後に再ログイン」などのソリューションが機能するのは、再ログイン後に必要なログインシェルにアクセスできるためです。ログインシェルを確認して実行するコマンド(選択したものとは無関係にいくつかの固定シェルを実行する代わりに)が解決策になる可能性があります。su存在するこの他の答えそれが順番です。

答え2

〜のようにケルムそれでも同じユーザー環境にいることを指摘しています。

更新するには、ログアウトして再度ログインする必要があります。または、必要に応じsuて、次のコマンドを使用して現在のセッションを失うことなく再ログインできます。

su - $USER

そうすれば、あなたecho $0の意志は正しく機能します。

このセッションを終了すると、exit前のセッションに戻ります。

関連情報