Dans un script shell bash, je dois définir PYTHONPATH. Nous avons le code suivant:Comment concaténer des chemins dans msys
if [ ${OS} == Windows_NT ]; then
PYTHONPATH="${TEST_DIR}input;${TEST_DIR}"
else
PYTHONPATH="${TEST_DIR}input:${TEST_DIR}"
fi
export PYTHONPATH
Cela fonctionne aussi sous msys2 aussi longtemps que test_dir est un chemin absolu. Cependant, dans mon code, TEST_DIR peut être à la fois un chemin absolu et un chemin relatif. Quand par exemple TEST_DIR =. msys2 n'effectue pas de magie: à; conversion, et par conséquent, PYTHONPATH n'est pas correctement défini.
détails sous-jacents
Lorsque msys2 exporte une variable d'environnement comme /c/first/path:/usr/local
il transfroms que le programme non-msys externe à une variable d'environnement Windows tels que c:/first/path;c:/msys2/usr/local
. Dans ce processus, il convertit les noms de fichiers de style Unix en noms de fichiers de style Windows et transforme le :
en ;
- ce qui est nécessaire car :
est une partie commune d'un nom de fichier Windows. Cependant, cela ne semble pas se produire lorsque msys2 ne reconnaît pas la variable d'environnement comme un chemin, comme cela semble être le cas avec ./:./input
.
David, a ajouté la section Informations détaillées pour répondre à votre question. –
Hé, merci de clarifier. Je suis incapable de reproduire votre problème dans mon installation de MSYS2. Voici une session shell de mon shell MINGW32 montrant ce que j'ai essayé: https://gist.github.com/DavidEGrayson/e87cb1631ab113ed1c9a86eb97a9ab2e –