Good to Know Database

Überprüfen ob eine Shell interaktiv ist


Unter Linux wird zwischen einer interaktiven Shell und einer nicht-interaktiven Shell unterschieden. Bei einer interaktiven Shell ist die Shell mit der Standardeingabe und Standardausgabe verbunden. Sobald Ihnen die Shell ein Prompt zur Verfügung stellt, handelt es sich folglich um eine interaktive Shell. Rufen Sie hingegen ein Shell-Skript aus einer interaktiven Shell auf, wird das Skript in einer nicht-interaktiven Shell ausgeführt.

Wenn Sie zum Beispiel den folgenden Befehl in Ihrer Shell ausführen, sollten Sie die Anzeige erhalten, dass es sich um eine interaktive Shell handelt.

georg@ubuntu1204:~$ [ -z "$PS1" ] && echo "Shell is not interactive" || echo "Shell is interactive"
Shell is interactive

Interessanter wird es bei einem Shell-Skript. Erstellen Sie einfach eine neue Datei mit einem Editor.

georg@ubuntu1204:~$ vi script.sh

Fügen Sie jetzt den folgenden Code in die Datei ein. Wie Sie sehen, handelt es sich im Grunde nur um den bereits oben gezeigten Befehl.

#!/bin/bash

if [ -z "$PS1" ]; then
  echo "Shell is not interactive"
else
  echo "Shell is interactive"
fi

exit 0

Nachdem Sie die Datei erstellt haben, müssen Sie die Zugriffsrechte noch anpassen, damit das Skript ausgeführt werden kann.

georg@ubuntu1204:~$ chmod 0755 script.sh

Rufen Sie jetzt das Bash-Skript einfach mit dem folgenden Befehl auf. Wie Sie sehen, wird das Skript in einer nicht-interaktiven Shell ausgeführt.

georg@ubuntu1204:~$ ./script.sh
Shell is not interactive

Will man das Shell-Skript in der aktuellen interaktiven Shell ausführen, setzt man dem Aufruf einfach einen Punkt voran.

georg@ubuntu1204:~$ . ./script.sh
Shell is interactive


Dieser Eintrag wurde am 03.08.2013 erstellt.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_7_2270.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer