Назад | Перейти на главную страницу

Лучший способ управлять переменными $ PATH?

Я ищу способ упростить управление своими $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 ..." - обратите внимание на пробелы, которые в таком случае не являются допустимым путем в файловой системе!