Я ищу способ упростить управление своими $PATH
переменные.
выполнение $PATH
возвращает мне:
/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin: No such file or directory
Для меня это полная чушь, и ее трудно читать.
Можно ли их перечислить так:
/usr/local/bin:
/usr/local/sbin:
/usr/local/mysql/bin:
/opt/local/bin:
/opt/local/sbin:
/usr/bin:/bin:
/usr/sbin:
/sbin:
/usr/local/bin:
/usr/X11/bin: No such file or directory
Я бы хотел управлять своим $ PATH с помощью Ruby, но, естественно, похоже, что мне нужно оставаться частью файлов конфигурации моей оболочки.
echo $PATH | sed 's/:/:\n'
Вы можете сделать что-то вроде:
PATH=$(ruby_prog $PATH)
в сценарии запуска (или другом исходном сценарии) или в приглашении оболочки.
Вы можете перечислить свой путь в нескольких строках, например:
PATH=\
/a:\
/b:\
/c:\
/d
Вы также можете добавить что-нибудь в свой путь, выполнив
PATH=${PATH}:/new:/stuff
чтобы ты мог иметь
PATH=/a
PATH=${PATH}:/b
(etc)
Рискуя показаться чокнутым старым * администратором NIX, пожалуйста, не делайте странных и забавных вещей, таких как написание скрипта ruby для управления PATH за вас - вы не собираетесь редактировать это очень часто (если вы вы, вероятно, делаете что-то не так), и в этом случае вам будет лучше, если вы будете соответствовать тем же стандартам, что и все остальные, особенно если / когда вам нужно попросить кого-то о помощи.
Список путей, разделенных двоеточиями, не так уж и ужасен в великой схеме плохо отформатированных вещей, которые вы найдете в мире :-)
$ PATH должен выглядеть так же, как и он, хотя вы, вероятно, можете разделить его по строкам, используя обратную косую черту (непроверено, нет доступной машины * nix или Linux).
Почему бы вам не написать сценарий Ruby, чтобы проанализировать его, сделать его читабельным и разрешить редактировать? Это будет хороший маленький проект.
Если на вашем сервере есть Perl, и вы не против его использовать, вы можете попробовать этот однострочный файл, чтобы отобразить ваш PATH (не управлять им):
printenv PATH | perl -nl -0x3A -e 'print ++$i, " ", $_;'
Я написал подробности об этом в моем техническом БЛОГЕ.
На большинстве серверов у нас есть как 64-битные, так и 32-битные среды приложений.
Все 32-битные компилируются в / opt / 32, все 64-битные - в / opt / 64.
Затем у нас есть сценарий "set_env" в обеих папках, который устанавливает соответствующие переменные PATH и LD_LIBRARY_PATH. Если мы хотим запустить что-то 32-битное, мы набираем
. /opt/32/set_env
или 64-бит:
. /opt/64/set_env
Формат, как предложил voretaq7, выглядит так:
export PATH="\
/opt/32/app1/bin:\
/opt/32/app2/bin:\
/opt/32/app3/bin"
(замените 32 на 64 в 64-битном скрипте.)
Только не делайте того, что я делал изначально, и не делайте отступы строк, потому что тогда он становится "/ opt / 32 ..." - обратите внимание на пробелы, которые в таком случае не являются допустимым путем в файловой системе!