Рекурсивно добавить каталог в переменную $ PATH


4

Можно ли рекурсивно добавить каталог в мою переменную $ PATH? Допустим, у меня есть структура каталогов, подобная следующей:

/usr/local/bin
    - /nodejs-x.x
    - /redis-x.x
    - /mongodb-x-x

Можно добавить /usr/local/bin в $ PATH и позволить ему рекурсивно покрывать подкаталоги?

Ответы:


4

Не напрямую, нет. Записи в $PATH не являются рекурсивными

Что вы можете сделать, это:

for d in /usr/local/bin/*/; do
    PATH+=":$d"
done

Другой вариант - поместить символические ссылки в /usr/local/bin:

cd /usr/local/bin
ln -s myapp-1.2/myapp myapp

Хорошо, имеет смысл. Есть ли разумное ограничение на длину переменной $ PATH? Я думаю, это может быть столько времени, сколько вы хотите, но есть ли какой-то недостаток в том, что он слишком длинный?
ajackbot

@jackweeden: блок окружения ограничен 1/4 разрешенного пространства стека (как показано ulimit -a; 2 МБ по умолчанию) и отдельные строки ( key=value пары) ограничены 32 страницами памяти (32 кБ для архитектуры объемом 4 КБ).
grawity

@jackweeden: незначительным недостатком является то, что все каталоги нужно будет проверять, одну за другой, для каждой команды, которую вы запускаете. Несмотря на то, что bash запоминает результаты после первого использования, он не делится этой информацией между экземплярами и забывает после выхода. С современными носителями это не так уж и много.
grawity
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.