На моем сервере они оба возвращают имя хоста:
$ ubuntu@mt-solo:~$ uname -n
myserver
$ ubuntu@mt-solo:~$ hostname
myserver
Это всегда так?
В Linux они эквивалентны. Один просто запекается в утилиту uname
, а другой - в утилиту hostname
.
uname -n
Печатает имя хоста сетевого узла или «имя узла».
hostname
Без каких-либо аргументов печатает имя системы, возвращаемое функцией gethostname ().
Документация к функциям uname()
включает в себя следующую информацию:
Обратите внимание, что не существует стандарта, который говорит, что имя хоста, установленное sethostname (2), является той же строкой как поле nodename структуры, возвращаемой uname () (в действительности, некоторые системы допускают 256-байтовое имя хоста и 8-байтовое имя узла), но это верно для Linux. То же самое верно для setdomainname (2) и поля имени домена.
blockquote>(обратите внимание, что Linux
sethostname()
ограничивает имена хостов до 64 байтов)Еще одно свидетельство того, что в GNU / Linux они точно такие же, содержится в документации по функции
gethostname()
:Библиотека GNU C не использует системный вызов gethostname (); вместо этого он реализует gethostname () как библиотечную функцию, которая вызывает uname (2) и копирует до длины байтов из возвращенного поля nodename в name.
blockquote>По сути,
hostname
включает внутренний вызовuname
.