| Termin | Definicja |
|---|---|
| WSL nie widzi zmiennych Windows | WSL niewidzący zmiennych Windows wskazuje na różnice ścieżek i środowiska między systemem hosta a wirtualną dystrybucją Linux. WSL nie widzi zmiennych Windows – czym jest ten problemProblem opisany jako „WSL nie widzi zmiennych Windows” pojawia się wtedy, gdy polecenie uruchomione w dystrybucji Linux działającej przez Windows Subsystem for Linux nie otrzymuje wartości znanych systemowi Windows. Może chodzić o zmienne takie jak PATH, TEMP, USERPROFILE, APPDATA, HOMEDRIVE, HOMEPATH albo własne wpisy dodane w ustawieniach systemowych. Sam fakt, że dana zmienna jest widoczna w PowerShellu lub w wierszu polecenia, nie oznacza jeszcze, że będzie dostępna w powłoce Bash wewnątrz WSL. WSL tworzy osobne środowisko uruchomieniowe. Dystrybucja Linux ma własny katalog główny, własne pliki konfiguracyjne, własnego użytkownika, odmienny sposób zapisu ścieżek i osobny mechanizm inicjalizacji powłoki. Windows może przekazywać część swoich zmiennych do procesu WSL, ale zakres tego przekazywania zależy od konfiguracji. Znaczenie mają między innymi ustawienia interop, sposób uruchomienia dystrybucji, rodzaj użytej powłoki oraz konfiguracja plików profilu. W praktyce komunikat lub objaw może wyglądać różnie. Polecenie WSL nie widzi zmiennych Windows – różnice środowisk i ścieżekWindows i Linux inaczej opisują lokalizację plików. W Windows spotyka się zapis w rodzaju Warto także rozróżnić trzy sytuacje. Pierwsza to zmienna zdefiniowana wyłącznie w Windows, której WSL nie importuje. Druga to zmienna przekazana do WSL, ale zawierająca ścieżkę zrozumiałą tylko dla aplikacji windowsowej. Trzecia to zmienna istniejąca w Bash, lecz nadpisana w pliku Nie należy zakładać, że WSL jest jedynie oknem do tego samego środowiska. Program uruchomiony w Linuxie korzysta z linuxowych bibliotek i reguł powłoki, a program uruchomiony przez WSL nie widzi zmiennych Windows – typowe przyczyny i objawyJedną z częstszych przyczyn jest zmiana zmiennej w ustawieniach Windows bez ponownego uruchomienia terminala. Proces, który już działał, zachowuje wcześniejsze środowisko. Zamknięcie pojedynczej karty terminala nie zawsze wystarcza, jeżeli sesja WSL pozostaje aktywna w tle. Pomocne może być zakończenie dystrybucji poleceniem Innym powodem może być ustawienie importowania zmiennych w konfiguracji WSL. W pliku Objaw może również wynikać z używania innej powłoki niż Bash. Zsh, fish oraz powłoki uruchamiane przez narzędzia programistyczne mogą mieć własne pliki inicjalizacyjne i własną kolejność odczytu ustawień. Zmienna wpisana do Występują także konflikty nazw. Windows może używać nazwy zmiennej, która w narzędziu linuxowym ma inne znaczenie. Problemem bywa ponadto wielkość liter, ponieważ w środowisku Linux nazwy WSL nie widzi zmiennych Windows – praktyczna diagnostykaDiagnostykę najlepiej rozpocząć od ustalenia, gdzie zmienna istnieje. W PowerShellu można użyć polecenia Przy analizie PATH warto wyświetlić każdy wpis w osobnym wierszu. W WSL można użyć polecenia Jeżeli celem jest użycie programu Windows, należy sprawdzić, czy interop działa prawidłowo. Proste polecenie, na przykład Przydatne jest wykonanie testu w czystej sesji, bez dodatkowych rozszerzeń terminala i bez automatycznego uruchamiania projektu. Można porównać wynik z sesją po odczytaniu pliku profilu oraz sprawdzić, czy problem pojawia się również dla nowego użytkownika WSL. Jeżeli nowy użytkownik otrzymuje poprawne środowisko, przyczyny należy szukać w plikach konfiguracyjnych konkretnego konta. Jeżeli problem dotyczy całej dystrybucji, należy przejrzeć ustawienia WSL i integracji z Windows. WSL nie widzi zmiennych Windows – bezpieczne rozwiązania i moment zgłoszeniaNajprostszym rozwiązaniem jest świadome ustawienie zmiennej w odpowiednim środowisku zamiast zakładania, że zostanie automatycznie odziedziczona. Zmienne potrzebne tylko aplikacjom Linux można zapisać w konfiguracji powłoki Linux, a wartości przeznaczone dla programów Windows pozostawić w ustawieniach Windows. Przy ścieżkach należy stosować format właściwy dla programu, który będzie z nich korzystał. Nie każda ścieżka Windows wymaga konwersji do formatu Linux i nie każdą ścieżkę linuxową zrozumie aplikacja uruchomiona po stronie Windows. Przed zmianą plików profilu warto wykonać kopię ich treści albo dopisać komentarz opisujący cel wpisu. Należy unikać wielokrotnego dopisywania tego samego katalogu do PATH przy każdym uruchomieniu powłoki, ponieważ po kilku sesjach zmienna może stać się długa i trudna do sprawdzenia. Wpisy powinny być jednoznaczne, ograniczone do potrzebnych katalogów i umieszczone w pliku odpowiadającym używanej powłoce. Po modyfikacji trzeba otworzyć nową sesję i ponownie sprawdzić wynik. Zgłoszenie do serwisu ma sens, gdy zmienne znikają po restarcie, konfiguracja działa tylko dla jednego konta, polecenia Windows są niedostępne z WSL, a także wtedy, gdy problem pojawia się po aktualizacji Windows, zmianie dystrybucji lub instalacji narzędzi programistycznych. Przydatne będzie przekazanie informacji o wersji Windows, nazwie dystrybucji, używanej powłoce, przykładowej zmiennej oraz dokładnym komunikacie błędu. Nie powinno się przesyłać haseł, kluczy dostępowych ani pełnych wartości zmiennych zawierających dane poufne. W Warszawskim Pogotowiu Komputerowym 24/7 można zgłosić problem z konfiguracją środowiska Windows i WSL, gdy samodzielne porównanie sesji nie wskazuje przyczyny albo zmiana jednego ustawienia powoduje kolejne błędy. Naprawy z reguły realizowane są do 3 dni roboczych. Przed przekazaniem urządzenia warto opisać, czy problem dotyczy wszystkich dystrybucji, tylko jednej powłoki, czy wyłącznie konkretnego programu. Tak przygotowany opis skraca drogę do rozpoznania, czy źródłem jest konfiguracja WSL, profil użytkownika, ścieżka PATH, interop czy aplikacja uruchamiana w nieodpowiednim środowisku. |