Myslím, že rozumím rozdílům mezi interaktivním, přihlašovacím a dávkovým shellem. Další nápovědu naleznete na následujících odkazech:
- Jaký je rozdíl mezi „Přihlášením“ a „Interaktivním“ bash shellem (ze sesterského webu:serverfault.com)
- 2.1:Typy shellu:interaktivní a přihlašovací shell (z Uživatelské příručky k Z-Shellu )
Moje otázka zní, jak mohu otestovat pomocí příkazu/podmínky, pokud jsem na interaktivním, přihlašovacím nebo dávkovém shellu?
Hledám příkaz nebo podmínku (která vrací true
nebo false
) a které bych také mohl umístit na příkaz if. Například:
if [[ condition ]]
echo "This is a login shell"
fi
Přijatá odpověď:
Předpokládám bash
shell nebo podobně, protože v značkách není uveden žádný shell.
Chcete-li zkontrolovat, zda jste v interaktivním prostředí:
[[ $- == *i* ]] && echo 'Interactive' || echo 'Not interactive'
Chcete-li zkontrolovat, zda jste v přihlašovacím prostředí:
shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'
Předpokládám, že „dávkou“ myslíte „neinteraktivní“, takže kontrola interaktivního shellu by měla stačit.