Kilka moich skryptów (zmiana mapy klawiszy, dodawanie klucza publicznego) musi działać inaczej w konsoli wirtualnej niż w xtermie. Jaki jest prawdziwy kod
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
shell
command-line
terminal
xterm
John Baber-Lucero
źródło
źródło
Jeśli chciałeś odróżnić powłoki interaktywne od nieinteraktywnych, użyj
test
wbudowanej obsługi do ich wykrywania (nie jestem pewien, czy ma go ksh, ale obsługuje go także plik binarny z coreutils):Jeśli naprawdę miałeś na myśli to, czy używasz tty / pty / pts, czy czegoś innego, przeanalizuj dane wyjściowe z
tty
:źródło
Będzie to zależeć od systemu operacyjnego. W przypadku systemu Linux możesz to zrobić:
Zakłada to oczywiście, że nie zmieniłeś
TERM
zmiennej środowiskowej, która jest automatycznie ustawianalinux
tylko po zalogowaniu się do konsoli wirtualnej (w Ubuntu jest to ustawionexterm
w aplikacjach konsolowych, ale może się różnić w zależności od systemu operacyjnego). Sprawdź zawartość TERM w różnych używanych aplikacjach i ustaw odpowiednio.źródło