シェルがログイン/対話型/配置であることを確認する方法

シェルがログイン/対話型/配置であることを確認する方法

対話型シェル、ログインシェル、バッチシェルの違いを理解したようです。詳しくは、次のリンクをご覧ください。

私の質問は、対話型、ログイン、またはバッチシェルを使用している場合は、コマンド/条件でどのようにテストしますか?

trueコマンドまたは条件(returnまたは)を探しているので、falseそれをifステートメントに入れることもできます。たとえば、

if [[ condition ]]
   echo "This is a login shell"
fi

ベストアンサー1

bashタグにシェルがリストされていないため、シェルなどがあるとします。

対話型シェルにあることを確認するには、次の手順を実行します。

[[ $- == *i* ]] && echo 'Interactive' || echo 'Not interactive'

ログインシェルに存在することを確認するには:

shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'

「バッチ」とは「非対話型」を意味すると仮定するため、対話型シェルを確認するだけで十分です。

おすすめ記事