Einige meiner Skripte (Ändern der Keymap, Hinzufügen öffentlicher Schlüssel) müssen sich in einer virtuellen Konsole anders verhalten als in einem xterm. Wofür ist der wahre Code?
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
shell
command-line
terminal
xterm
John Baber-Lucero
quelle
quelle
Wenn Sie interaktive von nicht interaktiven Shells unterscheiden
test
möchten , verwenden Sie die integrierte Unterstützung zum Erkennen (nicht sicher, ob ksh sie hat, aber die Binärdatei von coreutils unterstützt sie auch):Wenn Sie wirklich gemeint haben, ob Sie sich auf einem tty / pty / pts oder etwas anderem befinden, analysieren Sie die Ausgabe von
tty
:quelle
Dies hängt vom Betriebssystem ab. Für Linux können Sie Folgendes tun:
Dies setzt natürlich voraus, dass Sie die
TERM
Umgebungsvariable nicht selbst geändert haben. Diese wird automatischlinux
nur festgelegt, wenn Sie sich bei einer virtuellen Konsole anmelden (unter Ubuntu ist siexterm
in Konsolenanwendungen festgelegt, dies kann jedoch zwischen den Betriebssystemen variieren). Überprüfen Sie den Inhalt von TERM in den verschiedenen Anwendungen, die Sie verwenden, und stellen Sie ihn entsprechend ein.quelle