J'essaie de comprendre comment vous savez si une chaîne extensible sera correctement développée dans la Path
variable d'environnement d' un utilisateur .
Comme il semble y avoir un manque de documentation appropriée sur le site Web de MS ( ce sont les plus proches que je puisse trouver; les sujets SE ici et ici s'appliquent également), mes questions (et observations) peuvent être classées comme suit.
Type de variable
- Les documents MS indiquent qu'il peut s'agir d'une chaîne, d'une chaîne extensible ou d'un multistring.
- La valeur par défaut semble être une chaîne standard.
- En multistring, seule la première chaîne est reconnue.
- Mon système semble revenir périodiquement à une chaîne standard après avoir d'abord développé les variables (avec des valeurs fixes) à partir d'une chaîne extensible.
- Je ne sais pas si ce sont les programmes de mises à jour Microsoft ou les programmes d'installation non autorisés qui modifient le type en chaîne standard.
Couches d'expansion variables d'environnement
- Sur combien de couches d'expansion variable puis-je compter?
Ce fil SE semble indiquer que c'est imprévisible.
- En ce moment, j'ai
Path=%A_ProPath%
où A_ProPath est une autre chaîne extensible qui commence%_SysPWin%;%_SysPIntel%;%_SysPVSdotNET%;%_SysPPy%;%_SysPPerl%;%_SysPChoc%;%_SysPJava%;%_SysPSQL%;
. - Si toutefois, dans% _SysPIntel%, je me réfère à% _Intel_SW% (C: \ Program Files (x86) \ IntelSWTools), cela ne sera pas développé.
- En ce moment, j'ai
- J'obtenais des résultats différents si j'avais un type de variable défini sur extensible, mais sans aucune
%var%
référence à l'intérieur par opposition à la définition du type de variable sur chaîne standard. Il semble que les références aux chaînes standard soient plus souvent développées que celles aux chaînes extensibles. Pourquoi est-ce?
- Sur combien de couches d'expansion variable puis-je compter?
Ce fil SE semble indiquer que c'est imprévisible.
Séquence d'expansion des chaînes extensibles
- Le développement variable n'est pas récursif, il ne semble donc pas y avoir de problème avec les références cycliques
- L’expansion semble ne se dérouler que par ordre alphabétique et uniquement en un seul passage (par niveau: système puis utilisateur).
- Ordre que vous ajoutez ou modifiez des valeurs de variable ne semble pas avoir d'importance
- Les variables sont insensibles à la casse
Path
dans vos variables système est identique à%PATH%
ou%path%
dans une fenêtre d'invite de commande).Je ne sais pas s'ils sont tous convertis en un seul cas avant l'alphabétisation.
Je pense que j'ai commencé à commencer par commencer
_
par les noms de variables car les valeurs étaient alphabétiquement après que Path n'ait pas été étendu dans mon chemin, mais cela suggérerait que vous ne pouvez pas utiliser% SystemRoot% ou% WinDir% directement dans un chemin. Cela a-t-il un sens?En supposant que les variables d'environnement soient développées dans l'ordre alphabétique, je suppose également que les variables d'environnement sont insensibles à la casse. Mais lors du tri entre des caractères non alphabétiques, les variables d'environnement sont-elles évaluées comme si des lettres étaient en minuscules, puis comparées par la valeur ascii (par exemple, perlre
[0-9\- _]
se produit tous avant az)? ou en majuscule avant la comparaison ascii (_
vient après l'alphabet)?Quel est le jeu de caractères acceptables utilisé dans les noms de variables? Peut-on
~[]()
, etc. être utilisé??*!.
?S'il existe une variable d'environnement système appelée PATH et un utilisateur PATH, qui est évalué en premier? Mon utilisateur PATH peut-il faire référence à des variables personnalisées au niveau du système?