対話型シェル、ログインシェル、バッチシェルの違いを理解したようです。詳しくは、次のリンクをご覧ください。
- 「ログイン」と「対話型」bashシェルの違いは何ですか(姉妹サイトから:サーバー障害)
- ログインシェルと非ログインシェルの違いは何ですか?
- 2.1:シェルタイプ:インタラクティブシェルとログインシェル(からZシェルユーザーガイド)
私の質問は、対話型、ログイン、またはバッチシェルを使用している場合は、コマンド/条件でどのようにテストしますか?
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'
「バッチ」とは「非対話型」を意味すると仮定するため、対話型シェルを確認するだけで十分です。