В конечном итоге мы сделали комплексное решение, позволяющее избежать проблем с путями. В зависимости от варианта использования мы использовали одно или несколько из следующего:
PATH = ...
в этом сценарии и / или запустить исходный код $ HOME / .bashrc
в зависимости от ситуации. Это использовалось для инструментов, которым требовались другие инструменты, но которые в остальном могли работать в нашем кластере. Добавьте файл со значением, которое Вы хотите PATH
иметь в /etc/profile.d
. Эти файлы являются установкой, которая будет получена оболочками, такими как Bash, Csh Zsh или tcsh.
У нас должно было быть следующее значение, добавленное к нашему ПУТИ.
/usr/local/share/bin
Таким образом, мы создали файл, /etc/profile.d/ourstuff.sh
, со следующей строкой в нем:
export PATH=/usr/local/share/bin:$PATH
Файлы с расширением .sh
получены оболочками, такими как Bash и Zsh. Файлы с расширением .csh
получены Csh и tcsh.
OP задала следующий последующий вопрос.
Да, но что относительно заданий крона? Существует ли способ получить путь даже там? крон, кажется, не называет/etc/profile или/etc/bashrc.
На который я ответил:
Корректный это не делает, ни будет это. Необходимо установить SHELL=/bin/bash
в кроне для переопределения оболочки по умолчанию (обычно /bin/sh
). Также можно установить это для пользовательских кронов, BASH_ENV =" $HOME/.bashrc" и это для системных кронов, BASH_ENV="/root/.bashrc"
. Был бы один путь вокруг этого.
Я высоко предложил бы, чтобы Вы не сделали это. Позвольте сценариям, которые нужны в определенной среде, устанавливают ее самим. Не пытайтесь решить каждую проблему на глобальном уровне!
Можно вставить определения переменной среды /etc/environment
(предполагающий, что Ваши системные нагрузки pam_env
для всех сервисов, которые должны быть значением по умолчанию во всех современных невстроенных системах Linux).
Обратите внимание, что можно только поместить определения переменной статической среды формы VARIABLE=VALUE
или VARIABLE="VALUE"
, с одним определением на строку. У Вас не может быть произвольных команд оболочки, Вы не можете обратиться к значению другой переменной путем записи FOO=hello+$BAR
(который помещает литерал $
в значении FOO
), и т.д., пока Вы придерживаетесь простых присвоений как PATH=/usr/local/bin:/usr/bin:/bin:/share/apps/install/bin
, Вы будете в порядке (обратите внимание, что Вы не можете использовать корневой каталог пользователя там: значение должно быть тем же для всех пользователей).