Règles d'expansion des variables d'environnement (par exemple,% PATH%), etc. [fermé]

1

J'essaie de comprendre comment vous savez si une chaîne extensible sera correctement développée dans la Pathvariable 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.

  1. 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.
  2. 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é.
    • 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?
  3. 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
    • Pathdans 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.

      1. 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?

      2. 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)?

      3. Quel est le jeu de caractères acceptables utilisé dans les noms de variables? Peut-on ~[](), etc. être utilisé? ?*!.?

      4. 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?

mpag
la source
Trop de questions sont posées dans cet article. Veuillez modifier votre question pour qu'elle se concentre sur une seule question, avec éventuellement des questions parallèles clairement liées. Vous pouvez poser plusieurs questions sur ce site et les renvoyer facilement pour fournir un contexte si vous le souhaitez.
Twisty Impersonator
(travaille sur l'édition maintenant. désolé pour l'édition incomplète)
mpag
Il est utile d'effectuer votre édition hors ligne (dans un éditeur de texte ou un traitement de texte, par exemple), puis de la publier en tant que modification unique lorsque vous avez terminé. (OMI, ce n'est toujours pas clair et trop large.)
Scott