У меня есть код в моем .bashrc, который устанавливает заголовок окна терминала с помощью текущей команды, и он отлично работает в Unity, где терминал находится в окне. Однако, когда я вхожу в систему с помощью терминала Ctrl + Alt + F1 (независимо от того, что он вызвал), мое приглашение заполняется мусором, который представляет собой различные escape-последовательности, которые устанавливают (несуществующий) заголовок окна.
How могу ли я обнаружить из сценария bash, если я в одном или другом?
Не может быть намного проще:
echo "$TERM"
, если он вернет «xterm», вы находитесь в окне терминала, если он возвращает «linux», вы находитесь в виртуальном (Ctrl-Alt- F1)
В окне терминала в сеансе X11 обычно устанавливается переменная среды DISPLAY (за исключением некоторых случаев, когда используется su); это обычно не будет в консоли.