0
votes

La déclaration la plus efficace en .zshrc pour vérifier si Linux OS fonctionne sur WSL?

dans mon fichier .zshrc, je fixe conditionnellement ma variable de chemin Selon que je cours sur Linux ou MacOS - J'essaie maintenant de comprendre s'il y a une façon de détecter efficacement de mon .zshrc si je suis Travailler sur Linux en cours d'exécution sur WSL.

Je me demande si je peux en quelque sorte vérifier pour l'existence des fichiers / mnt / c / programme ou similaire - mais il doit y avoir une meilleure façon?

de mon actuel .zshrc: xxx

Si quelqu'un a de meilleures idées que de vérifier l'existence des fichiers / mnt / c / programme, je l'apprécierais beaucoup! < / p>


2 commentaires

Uname -r contient Microsoft. Github.com/kittykatt/screenfetch/blob/Master/screenfetch-dev


Merci - c'était exactement ce dont j'avais besoin - sauté une réponse à ma propre question ci-dessous.


3 Réponses :


0
votes

Merci au commentaire de Biswapiryo - j'ai proposé cette solution pour détecter WSL:

if [[ $(uname -r)] == ^*Microsoft$ ]]; then
  # Code goes here
fi


0 commentaires

4
votes

Il y a beaucoup de moyen possible de vérifier WSL dans n'importe quel shell. La plupart des fiable em> sont les suivants:

  1. à partir de Uname -r code> la sortie de commande. li>
  2. à partir de / proc / version code> fichier. li>
  3. de / proc / sys / kernel / osrelease code> fichier. li> OL>
    #!/bin/bash
    
    if uname -r |grep -q 'Microsoft' ; then
        echo True
    fi
    
    if grep -q -i 'Microsoft' /proc/version ; then
        echo True
    fi
    
    if grep -q -i 'Microsoft' /proc/sys/kernel/osrelease ; then
        echo True
    fi
    


0 commentaires

2
votes

dans WSL, il existe un fichier spécial pour vérifier l'interopérabilité appelée / proc / sys / wslinterop code> qui est un fichier spécifique WSL. Vous pouvez vérifier à l'aide de la commande suivante:

[ -f /proc/sys/fs/binfmt_misc/WSLInterop ]


0 commentaires