Разница между bash $HOSTNAME и tcsh/zsh $HOST

Вы можете проверить, не является ли ваша среда bash на самом деле оболочкой для bash, которая просто запускает bash ниже.

Мы используем похожее решение на нашем рабочем месте, и оно используется для отслеживания всего, что делается с помощью SSH, однако проблема точно такая же, как у вас, всякий раз, когда задействованы Ctrl + C, он любит выпадать из оболочки.

1
02.09.2020, 10:15
2 ответа

$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.

bash1.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).

0
18.03.2021, 23:08

Частичный ответ, а именно по содержимому переменных:

Значения всех переменных поступают из вызоваgethostname(2):

Значения по умолчанию::

  • tcsh:unknown.
  • bash:??host??
  • zsh:(ноль)

Интересно, что zshне проверяет возвращаемое значение!

1
18.03.2021, 23:08

Теги

Похожие вопросы