Экран: “Не может должностное лицо/my/path/to/zsh” с локальной оболочкой

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

[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 )

2
21.02.2013, 22:45
2 ответа

Это является смущающим: значение моего $SHELL переменная не была корректна (она имела опечатку). Я приношу извинения - я удостоверюсь, что утраиваю проверку эти вещи прежде, чем отправить вопрос как это и потратить впустую общее время. Большое спасибо ко всем для Вашей справки.

0
27.01.2020, 22:07

Одна возможная причина - это screen привилегирован (в некоторых системах, это - setgid utmp, смочь зарегистрировать терминальное владение к utmp файл), и что для этого zsh двоичного файла нужна библиотека, которая не находится в пути к библиотеке по умолчанию. Вызов setuid или setgid программы стирает некоторые переменные среды в особенности LD_LIBRARY_PATH.

Если можно выполниться /my/path/to/zsh/bin/zsh с внешнего экрана, но не изнутри, и Вы устанавливаете LD_LIBRARY_PATH в Вашем .profile, это объяснило бы Ваши признаки.

3
27.01.2020, 22:07
  • 1
    Спасибо Gilles. Я обновил свой OP с большим количеством информации. На самом деле, я вручную добавляю некоторые пути к LD_LIBRARY_PATH оба в моем .zshrc и .cshrc файлы, и мне нужны они, чтобы быть там по другим причинам, хотя я обычно переключаюсь на zsh с exec /my/path/to/zsh/bin/zsh, таким образом, я не уверен если мои определения в .cshrc перенесите на zsh. Есть ли что-нибудь, что я могу сделать знание этого? –  Amelio Vazquez-Reina 21.02.2013, 18:45

Теги

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