プロが教える店舗&オフィスのセキュリティ対策術

iMacで、ログインシェルがzshの状態で、
% chsh -s /bin/bash
でシェルをbashに切り替えて、ターミナルを立ち上げ直すと、
$echo $SHELL
/bin/bash
に切り替わっているのですが、

ログインシェルがzshの状態で、
% bash --login -i
でログインシェルで、インターラクティブモードでbashに入った場合、
インターラクティブにbashで動作はしてくれるのですが、
$echo $SHELL
/bin/zsh
となってSHELLの環境変数はzshのままです。
ログインシェルで入っているのに、なぜSHELL環境変数はzshのままなのでしょうか?

A 回答 (1件)

man bash曰く


「SHELL: この環境変数にシェルのフルパス名が保存されています。シェルを起動したときに設定されていない場合は、bash が現在のユーザのログインシェルのフルパス名を代入します。」
――とのことなので、環境変数SHELLが既に設定されてる状態でbashを実行しているなら、そのままということかと。

また、変数SHELLをクリア(unset)した状態でbashを実行した場合、bashが変数SHELLを設定しますがその際ログインシェルの情報(/etc/passwdや昔でいうところのNetInfo)を見るので、そちらが/bin/zshなら変数SHELLの値は「/bin/zsh」になります。

要するに「--login」付けて実行するとは関係ないという。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!