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.