Вы можете проверить, не является ли ваша среда bash на самом деле оболочкой для bash, которая просто запускает bash ниже.
Мы используем похожее решение на нашем рабочем месте, и оно используется для отслеживания всего, что делается с помощью SSH, однако проблема точно такая же, как у вас, всякий раз, когда задействованы Ctrl + C, он любит выпадать из оболочки.
$HOSTNAME
был добавлен в bash версии 2.0, выпущенной в декабре 1996 года .
Список изменений говорит, что он был реализован в 1995 -08 -01.
$HOST
был добавлен в zsh -2.0, выпущенный в 1991 году .
Это уже было в tcsh
в 1987 году .
Я могу только предположить, что bash
авторы думали, что HOSTNAME было лучшим именем, чем HOST, и я могу понять их точку зрения, учитывая, что bash
также была $HOSTTYPE
переменная (, как и сама tcsh
), добавленная намного раньше. в bash 1.05 в 1990 г.
$HOSTTYPE
сам по себе имеет более искаженную историю.
В примечаниях к выпуску tcsh 6.05 (июнь 1994 г. )вы видите:
- $HOSTTYPE is going away. New variables $OSTYPE, $MACHTYPE, $VENDOR similar to the gnu ones.
Те, кто устраняет двусмысленность относительно того, о каком типе мы говорили вместе с HOST
из имени переменной.
Тем не менее, $HOSTTYPE
так и не исчез в конце концов в tcsh
.
bash
1.14.0 в июне 1994 года представил $OSTYPE
, но $MACHTYPE
не был добавлен до 2.0, и $VENDOR
так и не попал в bash
, так что я не уверен, что гну те выше относится к.
zsh
также изначально имел $HOSTTYPE
, но он был удален там, заменен в бета-версиях zsh -2.6 -в 1995 году на $OSTYPE
, $MACHTYPE
и $VENDOR
.
В любом случае, если посмотреть здесь на систему Ubuntu GNU/Linux, работающую на ноутбуке с процессором amd64, значения этих переменных сильно различаются между оболочками, и похоже, что их семантика в bash
также значительно различалась между версиями.
Вы заметите, что bash
также решил отойти от подсказки tcsh
/ zsh
, где имя хоста было%M
(%m
для части перед первой точкой ), и выбрал \h
вместо (. ] как эквивалент%m
).
Частичный ответ, а именно по содержимому переменных:
Значения всех переменных поступают из вызоваgethostname(2)
:
tcsh
ш.к:main()
По умолчанию:unknown
. bash
оболочка.c:shell_initialize()
. По умолчанию:??host??
zsh
параметр с:createparamtable()
Значения по умолчанию::
tcsh
:unknown
. bash
:??host??
zsh
:(ноль)Интересно, что zsh
не проверяет возвращаемое значение!