Переменные среды (например,% PATH%), правила расширения и т. Д.
Я пытаюсь понять, как вы узнаете, будет ли расширяемая строка правильно раскрыта в Path
переменной окружения пользователя .
Поскольку, как представляется, отсутствие надлежащей документации на веб - сайте MS ( они являются ближе я могу найти, SE темы здесь и здесь также применимы), мои вопросы (и наблюдения) можно классифицировать следующим образом .
Тип переменной
- MS документирует, что это может быть String, Expandable String или Multistring.
- По умолчанию это стандартная строка.
- Если используется несколько строк, распознается только первая строка.
- Кажется, моя система периодически возвращается к стандартной строке после первого расширения переменных (с фиксированными значениями) из расширяемой строки.
- Я не уверен, что это Microsoft Updates или мошеннические установщики, которые изменяют тип обратно на стандартную строку.
Слои переменных переменных среды
- На сколько слоев расширения переменных я могу положиться? Этот поток SE, кажется, указывает на то, что он непредсказуем.
- Прямо сейчас у меня есть
Path=%A_ProPath%
где A_ProPath еще одна расширяемая строка, которая начинается%_SysPWin%;%_SysPIntel%;%_SysPVSdotNET%;%_SysPPy%;%_SysPPerl%;%_SysPChoc%;%_SysPJava%;%_SysPSQL%;
. - Однако если внутри% _SysPIntel% я ссылаюсь на% _Intel_SW% (C: \ Program Files (x86) \ IntelSWTools), это не расширяется.
- Прямо сейчас у меня есть
- Я получал разные результаты, если бы у меня был установлен тип переменной, который можно расширять, но без каких-либо
%var%
ссылок внутри, вместо того, чтобы просто установить тип переменной для стандартной строки. Кажется, что ссылки на стандартные строки чаще расширяются, чем ссылки на расширяемые строки. Почему это?
- На сколько слоев расширения переменных я могу положиться? Этот поток SE, кажется, указывает на то, что он непредсказуем.
Последовательность расширения расширяемых строк
- Расширение переменной не является рекурсивным, поэтому с циклическими ссылками проблем не возникает
- Похоже, что расширение происходит только в алфавитном порядке и только за один проход (на уровень: система, а затем пользователь).
- Порядок добавления или изменения значений переменных не имеет значения
- Переменные нечувствительны к регистру
Path
в ваших системных переменных то же, что%PATH%
или%path%
в окне командной строки).Я не знаю, все ли они преобразуются в один случай до алфавитизации.
Я полагаю, что я начал делать,
_
чтобы приводить имена переменных, потому что любые значения были расположены в алфавитном порядке после того, как Path не расширялся в моем пути, но это предполагает, что вы не можете использовать% SystemRoot% или% WinDir% непосредственно в пути. Есть ли в этом смысл?Предполагая, что переменные среды расширяются в порядке их алфавитного вида, я также предполагаю, что переменные среды нечувствительны к регистру. Но при сортировке против неалфавитных символов оцениваются ли переменные среды, как если бы какие-либо буквы были в нижнем регистре, а затем сравнивались по значению ascii (например, perlre
[0-9\- _]
all встречается до az)? или в верхнем регистре перед сравнением ascii (_
идет после алфавита)?Какой набор допустимых символов используется в именах переменных? Можно
~[]()
и т. Д. Использовать??*!.
?Если есть системная переменная среды с именем PATH и пользовательская переменная PATH, какая оценка выполняется в первую очередь? Может ли мой пользовательский PATH ссылаться на пользовательские переменные системного уровня?
0 ответов на вопрос
Похожие вопросы
-
12
Почему папка / winsxs становится такой большой и ее можно уменьшить?
-
2
Повышенные привилегии для запуска приложений в Windows?
-
14
PDF Viewer в Windows
-
-
7
Какие службы Windows можно безопасно отключить?
-
8
Firefox PDF плагин для просмотра PDF в браузере на Windows
-
1
Windows теряет макет экрана
-
1
Есть ли способ предотвратить установку / обновление, чтобы засорять мой жесткий диск загадочными пап...
-
1
Как я могу получить доступ к принтеру Windows Vista из Ubuntu по сети?
-
6
Просмотр журнала в Windows
-
3
Фоновая проблема Windows с двумя экранами