web-dev-qa-db-fra.com

Comment supprimer le PATH de Win10 de WSL

J'utilise Windows Subsystem Linux (Ubuntu 18.04) dans mon Win10, et j'installe un Maven dedans. D'ailleurs, j'installe un maven dans Win10 avant. Maintenant, quand j'ai utilisé mvn compile en WSL, il m'a dit que la compilation de maven échouait. J'utilise which mvn et trouve qu'il fait référence au Maven installé dans Win10.

En outre, je lance env et constate que le chemin de Win10 est ajouté au chemin du WSL. Je ne veux rien utiliser dans le chemin de Win10 lorsque j'utilise WSL, comment dois-je faire?

12
Sineatos
  • Pour Windows, build INFÉRIEUR à 17713: WSL utilise WSL_DISTRIBUTION_FLAGS Enumeration pour configurer son comportement et son interopérabilité entre Windows et Linux. Voici l'extrait de code de wslapi.h En tête de fichier.

    /* Flags specifying WSL behavior */
    typedef enum
    {
        WSL_DISTRIBUTION_FLAGS_NONE                  = 0x0,
        WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP        = 0x1,
        WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH        = 0x2,
        WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING = 0x4
    } WSL_DISTRIBUTION_FLAGS;
    
    #define WSL_DISTRIBUTION_FLAGS_VALID (WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP | WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH | WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING)
    #define WSL_DISTRIBUTION_FLAGS_DEFAULT (WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP | WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH | WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING)
    

    Au premier lancement, WSL utilise l'indicateur par défaut = 0x7 (c'est-à-dire 0 + 1 + 2 + 4). Si cet indicateur = 0x5 (c'est-à-dire 0 + 1 + 4), le chemin Windows NT ne sera pas ajouté dans $PATH variable d'environnement. Alors, comment trouver cette valeur de registre des drapeaux? Ouvert HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss chemin de registre dans l'Éditeur du Registre aka. regedit.exe. Ouvrez chaque sous-clé avec des valeurs UID et faites correspondre DistributionName avec votre nom de distribution installé. Ensuite, modifiez/ajoutez la valeur de registre Flags DWORD à 0x5.

  • Pour la version Windows SUPÉRIEUR à 1771 : Dans la nouvelle version, WSL utilise wsl.conf fichier pour configurer son comportement et son interopérabilité entre Windows et Linux. Cette wsl.conf le fichier suit format de fichier INI . Courir wsl.exe ou bash.exe. Créez un fichier /etc/wsl.conf. Ajoutez ensuite ce qui suit section interop avec n'importe quel éditeur de texte sous Linux.

    [interop]
    enabled=false # enable launch of Windows binaries; default is true
    appendWindowsPath=false # append Windows path to $PATH variable; default is true
    

    Enregistrez ce fichier et quittez wsl.exe. Désormais, chaque fois que WSL est exécuté, les chemins Windows ne seront pas ajoutés à Linux $PATH variable d'environnement.

21
Biswapriyo