Что вызывает скрипт csh иногда не source /etc/csh.cshrc?

У меня есть сценарий пост-установки csh, который выполняется из сообщения rpm %post с его линией перевода, установленной в #!/bin/csh (без опции -f ). Это должно привести к тому, что файл /etc/csh.cshrc должен быть прочитан перед выполнением остальной части скрипта в соответствии с /etc/csh.cshrc страницами для bsd-csh (1) и tcsh (1) . У меня есть определенные общесистемные переменные среды и определения псевдонимов в /etc/csh.cshrc что скрипт зависит от правильной работы. Ожидаемое поведение заключается в том, что, когда csh выполняет сценарий, он сначала берет определения общесистемной системы, а затем запускает сценарий.

Это работает, по крайней мере, на начальном этапе при определенных условиях. Сценарий csh всегда называется таким же образом из раздела %post rpm %post . Однако, в зависимости от того, как выполняется приложение rpm install, скрипт может не отображать ожидаемые переменные и ошибку, поэтому мне кажется, что это, вероятно, не поиск /etc/csh.cshrc . Установка может быть выполнена в корневой оболочке входа, через sudo, поверх ssh, из cron или инициирована каким-либо другим процессом. По крайней мере, один из них вносит определенную разницу, которая предотвращает /etc/csh.cshrc источника /etc/csh.cshrc . Я не вижу ничего на страницах man, кроме опции -f которая могла бы вызвать это.

One Solution collect form web for “Что вызывает скрипт csh иногда не source /etc/csh.cshrc?”

Оказывается, разница состоит в отсутствии переменной среды $HOME . Когда $HOME не определяется в среде, никакие файлы запуска вообще не получены csh или tcsh. Отсутствие переменной $HOME интерпретируется csh точно так же, как если бы ему была задана опция -f командной строки.

Это имеет смысл при рассмотрении файлов запуска оболочки ~/.cshrc и ~/.login в домашнем каталоге пользователя. Если $HOME не определен, то эти файлы, зависящие от пользователя, не могут быть загружены. Но csh просто пропускает поиск всех файлов запуска, как общесистемных, так и пользовательских, когда $HOME не определен.

Определение $HOME в любой действительный каталог перед выполнением скрипта csh, будь то реальный домашний каталог пользователя или даже пустой временный каталог, делает источник csh /etc/csh.cshrc как ожидалось.

Я не нашел никакой документации для объяснения или описания этой функции, но исходный код для bsd-csh и tcsh подтверждает это поведение.

  • Если вы измените переменную среды в другой оболочке, она изменится или останется неизменной в других оболочках?
  • перенаправить вывод на определенный номер строки
  • поиск файла внутри скрипта
  • Как установить переменную как идентификатор пользователя
  • Как я могу сделать ключ backspace удалить один символ назад в tcsh?
  • проверка статуса для команды sleep
  • Как выполнить команду на каждом входе, учитывая список входных данных
  • Почему руководство для команды «где» недоступно
  • Исходный сценарий оболочки автоматически в терминале
  • Как предотвратить удаленный вход ssh из-за нарушения dbus?
  • Как можно обеспечить цвет для завершения табуляции в tcsh?
  • Interesting Posts

    Символ пользовательского режима для подсказок Bash

    Как выполнять поиск и список файлов и папок с определенным шаблоном?

    Изменения в / etc / hosts не распознаются командами оболочки до выхода из системы и входа в систему

    Как автоматически монтировать внутренние разделы жесткого диска в точки динамического подключения?

    Интегрируйте мой собственный модуль PAM с помощью команды passwd

    Сколько времени занимает установка Linux Mint?

    Что такое + в команде find / path / -exec '{}' + do?

    Сетевой интерфейс, не регистрирующий ответ ARP

    Установите Linux на SSD или жесткий диск для виртуализации Windows с QEMU?

    Как использовать автопроект для создания проекта C ++

    Как правильно избежать этого слова на vim?

    / proc / pid / maps (и их преобразование)

    Avconv создает 0-байтовый выходной файл после применения снижения частоты кадров

    Ошибка при установке edx на debian squeeze

    Постоянно высокое, но уменьшающееся поведение ping на машине ubuntu

    Linux и Unix - лучшая ОС в мире.