GNU/Linux >> Znalost Linux >  >> Linux

Jak zkontrolovat, zda je Shell přihlašovací/interaktivní/dávkový?

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.


Linux
  1. Jak otestovat, jaký Shell používám v terminálu?

  2. Proč jsou ve výchozím nastavení interaktivní shelly na přihlašovacích shellech Osx?

  3. Jak zkontrolovat verzi CentOS

  1. Proč Bashrc kontroluje, zda je aktuální shell interaktivní?

  2. Jak spustíte skript při přihlášení v *nix?

  3. Jak zkontrolovat, zda je aktuálně spuštěný shell BusyBox

  1. Jak zkontrolovat podřetězec v Shell Script Bash?

  2. Jak zkontrolovat, který Shell používám?

  3. Jak změnit Shell v Linuxu