GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie überprüfe ich, ob eine Shell angemeldet/interaktiv/Batch ist?

Ich glaube, ich verstehe die Unterschiede zwischen einer interaktiven, einer Anmelde- und einer Batch-Shell. Unter den folgenden Links finden Sie weitere Hilfe:

  • Was ist der Unterschied zwischen einer „Login“- und einer „interaktiven“ Bash-Shell (von der Schwesterseite:serverfault.com)
  • 2.1:Arten von Shells:interaktive Shells und Login-Shells (aus A User’s Guide to the Z-Shell )

Meine Frage ist, wie kann ich mit einem Befehl/einer Bedingung testen, ob ich mich in einer interaktiven, einer Login- oder einer Batch-Shell befinde?

Ich suche nach einem Befehl oder einer Bedingung (die true zurückgibt oder false ) und die ich auch auf eine if-Anweisung setzen könnte. Zum Beispiel:

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

Akzeptierte Antwort:

Ich gehe von einer bash aus Shell oder ähnliches, da in den Tags keine Shell aufgeführt ist.

So überprüfen Sie, ob Sie sich in einer interaktiven Shell befinden:

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

So prüfen Sie, ob Sie sich in einer Login-Shell befinden:

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

Ich nehme an, Sie meinen mit „Batch“ „nicht interaktiv“, also sollte die Prüfung auf eine interaktive Shell ausreichen.


Linux
  1. Wie teste ich, welche Shell ich in einem Terminal verwende?

  2. Wie überprüfe ich die Teilzeichenfolge in Shell Script Bash?

  3. Wie überprüfe ich, welche Shell ich verwende?

  4. So überprüfen Sie fehlgeschlagene oder fehlerhafte Anmeldeversuche unter Linux

  5. So überprüfen Sie die CentOS-Version

So überprüfen Sie die Python-Version

So überprüfen Sie die Java-Version

So installieren Sie Fish, die freundliche interaktive Shell, unter Linux

Wie überprüfe ich die OpenGL-Version?

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in der Bash-Shell vorhanden ist

Was ist die Login-Shell in Linux?