Я знаю, что могу изменить / etc / profile ... но есть ли способ лучше? Я знаю, что / etc / profile повлияет на терминалы, но я хочу, чтобы это повлияло на все процессы. crontab, диспетчер служб, сценарии запуска и т. д.
Редактировать: У меня есть ответ, чтобы отредактировать ПУТЬ для cron ... но я все еще хочу один для сценариев запуска и исполняемых файлов, которые вызываются управлением службами.
Вы должны учитывать среду, в которой работают некоторые из ваших приложений, указанных выше. Выполнение этих типов команд с PATH, которые они не ожидают, имеет последствия для безопасности. Злоумышленник, имеющий доступ к каталогу на ранней стадии PATH, может заменить свои собственные команды и получить доступ и т. Д.
В сценариях запуска обычно используются полные пути к командам, которые они хотят запустить (некоторые могут устанавливать ограниченный PATH) - это гарантирует выполнение ожидаемых команд.
При вызове службы SCM не использует PATHS, он использует манифесты ( /var/svc/manifest/...
). Манифесты представляют собой файлы xml и содержат всю информацию, необходимую для определения того, как взаимодействовать с данной службой. Опять же, полные пути к командам используются для обеспечения выполнения ожидаемых команд.
Вы можете установить значение по умолчанию PATH
(обычные пользователи) или SUPATH
(для root) в /etc/default/cron
. Опять же, вы должны учитывать последствия этого для безопасности - гораздо лучше использовать полные пути к командам и при необходимости, чтобы команды определяли свой собственный PATH.
Я считаю, что PATH по умолчанию, который init передает в SMF, и сценарии инициализации компилируются в в этом двоичный и не может быть изменен. это явно не читать из / etc / default / init.
Я согласен с @lain, что вам действительно следует использовать полные пути к нужным вам командам. Тем не менее, источник большинства методов smf /lib/svc/share/smf_include.sh
. Вы можете изменить там переменную PATH, но я бы сказал, что это вообще плохая идея.