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.