GNU/Linux >> Tutoriels Linux >  >> Linux

Comment vérifier si un shell est connecté/interactif/batch ?

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.


Linux
  1. Comment tester quel shell j'utilise dans un terminal ?

  2. Pourquoi les shells interactifs sur les shells de connexion Osx sont-ils par défaut ?

  3. Comment changer de shell sous Linux

  4. Comment vérifier l'historique de connexion Linux

  5. Comment vérifier si une commande shell existe depuis PHP

Comment vérifier la version de Python

Comment vérifier la version Java

Comment installer Fish, le shell interactif convivial, sous Linux

Comment vérifier la version d'OpenGL ?

Comment vérifier si un fichier ou un répertoire existe dans Bash Shell

Qu'est-ce que le shell de connexion sous Linux ?