Похоже, что что-то могло бы быть mislabeled. Вы попытались работать restorecon -R /var/lib/mysql
?
Переменная среды установлена раз и навсегда (для данного процесса; когда процесс запускает другого, ребенок наследовал среду родителя). Так доступ $HOSTNAME
непосредственно читает значение в памяти. Напротив, каждый раз Вы оцениваете замену команды `hostname`
(также записанный $(hostname)
), это выполняется hostname
команда.
В случае $HOSTNAME
и hostname
, на практике это не имеет никакого значения. $HOSTNAME
незначительно быстрее. В принципе, $HOSTNAME
может быть неправильным, если Вы работали HOSTNAME=some_bogus_value
(тогда как $(hostname)
может быть неправильным, если Вы помещаете некоторых отличающихся hostname
программа на Вашем $PATH
), и только hostname
в курсе, если Вы изменяете свое имя хоста.
Часто существует (но не всегда) a HOSTNAME
переменная среды, потому что это часто использовало (например, в приглашениях оболочки) и почти никогда не изменяется. Существует a hostname
команда (в большинстве систем) для устанавливания значения HOSTNAME
(HOSTNAME=$(hostname)
) и изменить имя хоста (hostname $(cat /etc/hostname)
, обычно сделанный рано в процессе начальной загрузки).
Уместно зависеть от команд, которые выбирают текущее значение, чем переменные, которые могут стать устаревшими в течение времени на необслуживаемых сессиях.
[centos@abc ~]$ /bin/hostname
abc.dns.com
[centos@abc ~]$ echo $HOSTNAME
abc.dns.com
[centos@abc ~]$ uname -n
abc.dns.com
[centos@abc ~]$ sudo /bin/hostname xyz.dns.coom
[centos@abc ~]$ uname -n
xyz.dns.coom
[centos@abc ~]$ /bin/hostname
xyz.dns.coom
[centos@abc ~]$ echo $HOSTNAME
abc.dns.com
[centos@abc ~]$
Я думаю его ясное это $HOSTNAME
переменная оболочки, которая расширена/оценена путем получения вывода /bin/hostname
в начале инициализации оболочки и не обновленного каждый раз или если имя хоста является динамичным. В зависимости от вывода /bin/hostname
более надежно, чем $HOSTNAME, если это не тот же сценарий или программа, которая уже оценила название хоста в том же пространстве программы.
Ну, короче говоря, вывод команд /bin/hostname
или /bin/uname -m
более соответствующий метод должен знать имя хоста, чем просто использование $HOSTNAME (который мог стать устаревшим как любая другая нормальная переменная SHELL).
Если Вам любопытно знать, как действительно окружает, наследовали $HOSTNAME, то его надлежащее, чтобы знать, что оболочка читает свою глобальную инициализацию (дистанционное управление) файлы как/etc/profile (или/etc/bashrc), из которого эта переменная определила от снова вывода /bin/hostname
.
(Также важно знать что программы кроме оболочки без предшествующего выполнения /bin/hostname
команде можно было определить/инициализировать переменную ИМЕНИ ХОСТА из-за системного названного сценария запуска /etc/rc.sysinit
)
hostname
к $HOSTNAME и использованию полного пути?
– Michael
04.01.2012, 00:57