Уместно зависеть от команд, которые выбирают текущее значение, чем переменные, которые могут стать устаревшими в течение времени на необслуживаемых сессиях.
[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
)
Это является смущающим: значение моего $SHELL
переменная не была корректна (она имела опечатку). Я приношу извинения - я удостоверюсь, что утраиваю проверку эти вещи прежде, чем отправить вопрос как это и потратить впустую общее время. Большое спасибо ко всем для Вашей справки.
Одна возможная причина - это screen
привилегирован (в некоторых системах, это - setgid utmp
, смочь зарегистрировать терминальное владение к utmp
файл), и что для этого zsh двоичного файла нужна библиотека, которая не находится в пути к библиотеке по умолчанию. Вызов setuid или setgid программы стирает некоторые переменные среды в особенности LD_LIBRARY_PATH
.
Если можно выполниться /my/path/to/zsh/bin/zsh
с внешнего экрана, но не изнутри, и Вы устанавливаете LD_LIBRARY_PATH
в Вашем .profile
, это объяснило бы Ваши признаки.
LD_LIBRARY_PATH
оба в моем .zshrc
и .cshrc
файлы, и мне нужны они, чтобы быть там по другим причинам, хотя я обычно переключаюсь на zsh
с exec /my/path/to/zsh/bin/zsh
, таким образом, я не уверен если мои определения в .cshrc
перенесите на zsh
. Есть ли что-нибудь, что я могу сделать знание этого?
– Amelio Vazquez-Reina
21.02.2013, 18:45