Предел переменной пути


3

Есть ли символьное ограничение на длину переменной PATH в macOS? Или существует ли ограничение на количество двоичных файлов, на которые вы можете ссылаться в своем пути?


PATH не ссылается на двоичные файлы - он содержит каталоги, в которых могут находиться двоичные файлы
Марк

Сожалею. Я предполагаю, что мой вопрос был больше, если есть ограничение на количество символов, как долго может быть ваш путь.
Коди Рутшер

Ответы:


1

Размер переменной зависит от ограничений аппаратного обеспечения, на котором он запущен, то есть переменная может составлять миллионы байтов. Но переменная окружения, такая как PATH, подвержена системным ограничениям (ARG_MAX), поскольку вся среда передается системному вызову execve. Таким образом, разумной оценкой максимального размера переменной среды будет байты, используемые в текущей среде env | wc -c, плюс разумный буфер байтов, необходимый для выполнения команд в оболочке, - 2048 байтов до 4096 байтов, вычтенные из максимального числа. байтов, разрешенных в аргументе - 262144 байта. Возможность использования переменной окружения такого размера является еще одной проблемой.

Оболочка начинает поиск по крайнему левому пути, указанному в переменной PATH, затем переходит к следующему и следующему, пока не найдет введенную вами команду. Оболочка также ведет запись этой команды, поэтому ей не нужно снова искать переменную PATH в текущем сеансе. Это указывает на то, что поиск PATH стоит дорого. Таким образом, максимальный размер вашей переменной PATH должен быть настолько мал, насколько вы можете это сделать.


4

В принципе, вы никогда не достигнете предела, если у вас будет какой-нибудь разумный ПУТЬ.

Я только что попробовал иметь переменную PATH длиной 96 кБ (неоправданно длинная). На High Sierra работает без проблем.

Если я увеличу его до 128 кБ, у меня начнутся проблемы с запуском команд, поскольку они не будут работать из-за большой среды. Среда PATH сохраняется.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.