Je pense comprendre les différences entre un shell interactif, un login et un batch shell. Consultez les liens suivants pour obtenir de l'aide :
- Quelle est la différence entre un "Login" et un shell bash "Interactif" (du site partenaire :serverfault.com)
- 2.1 :Types de shell :shells interactifs et de connexion (extrait du Guide de l'utilisateur du Z-Shell )
Ma question est, comment puis-je tester avec une commande/condition si je suis sur un shell interactif, de connexion ou batch ?
Je recherche une commande ou une condition (qui renvoie true
ou false
) et que je pourrais également placer sur une instruction if. Par exemple :
if [[ condition ]]
echo "This is a login shell"
fi
Réponse acceptée :
Je suppose un bash
shell, ou similaire, car aucun shell n'est répertorié dans les balises.
Pour vérifier si vous êtes dans un shell interactif :
[[ $- == *i* ]] && echo 'Interactive' || echo 'Not interactive'
Pour vérifier si vous êtes dans un shell de connexion :
shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'
Par "lot", je suppose que vous voulez dire "non interactif", donc la vérification d'un shell interactif devrait suffire.