GNU/Linux >> Linux Esercitazione >  >> Linux

Come verificare se una shell è login/interactive/batch?

Penso di capire le differenze tra una shell interattiva, un login e una batch. Per ulteriori informazioni, vedere i seguenti collegamenti:

  • Qual ​​è la differenza tra una shell bash "Login" e una "Interactive" (dal sito gemello:serverfault.com)
  • 2.1:Tipi di shell:shell interattive e di accesso (da A User's Guide to the Z-Shell )

La mia domanda è:come posso testare con un comando/condizione se sono su una shell interattiva, di accesso o batch?

Sto cercando un comando o una condizione (che restituisce true o false ) e che potrei anche inserire in un'istruzione if. Ad esempio:

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

Risposta accettata:

Presumo un bash shell, o simili, poiché non c'è nessuna shell elencata nei tag.

Per verificare se sei in una shell interattiva:

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

Per verificare se sei in una shell di accesso:

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

Per "batch", suppongo tu intenda "non interattivo", quindi il controllo per una shell interattiva dovrebbe essere sufficiente.


Linux
  1. Perché le shell interattive sulle shell di accesso Osx sono predefinite?

  2. Come verificare quale shell sto usando?

  3. Come cambiare la shell in Linux

  4. CentOS / RHEL:come modificare la shell di accesso dell'utente

  5. Come controllare i tentativi di accesso falliti o errati in Linux

Come controllare la versione di Python

Come controllare la versione Java

Come installare Fish, la shell interattiva amichevole, in Linux

Come controllare la versione OpenGL?

Come verificare se esiste un file o una directory in Bash Shell

Che cos'è Login Shell in Linux?