Я знаю, что в unix / linux переменные окружения в верхнем регистре, например LD_LIBRARY_PATH ; HOME ; $USER
и так далее. Сегодня, играя с wget, я увидел, что эти команды просто используют переменные окружения в нижнем регистре:
env | grep -i proxy
http_proxy=http://10.0.0.120:8080
wget -q http://google.it
echo $?
0
unset http_proxy
export HTTP_PROXY=http://10.0.0.120:8080
wget -q http://google.it
echo $?
1
Почему wget не читает HTTP_PROXY
в верхнем регистре?
Краткий ответ: К сожалению, разные программы используют разные env
переменные.
Длинный ответ, от (https://wiki.archlinux.org/index.php/proxy_settings#Environment_variables):
Некоторые программы (например, wget) используют переменные окружения в форме «protocol_proxy» для определения прокси для данного протокола. (...) Некоторые программы ищут версию переменных среды, написанную заглавными буквами.
Раньше я делал простой скрипт, который устанавливает обе версии (все заглавные и «обычные» версии, чтобы легко включать и выключать их, и кажется, что это обычный способ делать что-то, если это нужно делать через env
переменные.
Это всего лишь предположение, но сроки проекта предполагают, что это для обратной совместимости с Lynx, который предшествует curl на несколько лет (и который использует прокси-переменные в нижнем регистре).
Unix чувствителен к регистру. Это означает, что $ http_proxy и $ HTTP_PROXY - две разные переменные.
Посмотри на это:
user@foo[~]+ xx=2 user@foo[~]+ echo $xx 2 user@foo[~]+ echo $XX user@foo[~]+