Чтобы решить мою конкретную проблему (LD_LIBRARY_PATH), проще всего добавить содержимое переменной в файл в /etc/ld.so.conf.d. Например, я создал /etc/ld.so.conf.d/hdp.conf с содержимым:
/usr/java/jdk1.8.0_66/jre/lib/amd64/server
/usr/hdp/2.5.0.0-1245/usr/lib
После запуска один раз ldconfig
от имени root, этот новый 'ld_library_path' доступен по всей системе.
Чтобы ответить на вопрос о переменных окружения в целом, лучше всего подойдет ответ от @meuh.
pkill
никогда не убивает себя, как и pgrep
nerver записывает себя; pkill
выполняет выход из после завершения каждого процесса, соответствующего критериям, кроме самого себя. pkill
действительно уничтожает своих родителей, если они соответствуют критериям, но если родитель является оболочкой, если вы не используете непреодолимый сигнал (обычно только -9, также известный как - [SIG] KILL), оболочка обычно игнорирует это. Если он включает ваш sshd
, он действительно убьет ваш сеанс, а вместе с ним и вашу оболочку и (большинство?) Других процессов, что обычно нежелательно.
Вы можете использовать pgrep
, чтобы найти процессы, возможно, с помощью -l
или -lf
, и выполнить дополнительные проверки прежде чем убить
их.
Кажется, что с pkill из procps -ng, pkill -f
МОЖЕТ сопоставить свою собственную командную строку и убить себя, в то время как BSD pkill
в macOS, похоже, этого не делает.(Я тестировал "pkill from procps -ng 3.3.17")
См. linux -Предотвратить самоуничтожение процесса с помощью pkill -Переполнение стека , чтобы узнать, как этого избежать.