Pytania o
- ustawianie zmiennych środowiskowych
-
PATH
są tutaj bardzo powszechne, aw większości przypadków odpowiedzi są do siebie bardzo podobne. W przyszłości byłoby miło mieć dobre Q / A do tego.
Pytanie brzmi: czym są zmienne środowiskowe, takie jak plik wykonywalny PATH
, i jak mogę je zmienić i używać w głównych systemach operacyjnych?
Dobra odpowiedź obejmowałaby proste wyjaśnienie, jakie zmienne środowiskowe, a szczególnie PATH
oznaczają dla systemu operacyjnego, a także proste wytyczne, jak odpowiednio je ustawić i odczytać.
env
i potrzebne opcje są na liście.CMD
i pisanieset
lubPowerShell
pisanieGet-Childitem env:
.Odpowiedzi:
Co to są zmienne środowiskowe?
Zmienne środowiskowe przechowują wartości związane z bieżącym środowiskiem, takie jak system operacyjny lub sesje użytkownika.
Ścieżka
Jeden z najbardziej znanych nazywa się
PATH
w systemach Windows, Linux i Mac OS X. Określa katalogi, w których na komputerze znajdują się programy wykonywalne *, które można uruchomić bez znajomości i wpisania całej ścieżki do pliku w wierszu poleceń . (Lub w systemie Windows okno dialogowe Uruchom w menu Start lub + R).W systemach Linux i Mac OS X, to zwykle trzyma wszystko
bin
isbin
katalogów istotne dla bieżącego użytkownika. W systemie Windows zawiera przynajmniej katalogiC:\Windows
iC:\Windows\system32
- dlatego możesz uruchamiaćcalc.exe
lubnotepad.exe
z poziomu wiersza poleceń lub okna dialogowego Uruchom , ale niefirefox.exe
. (Firefox znajduje się wC:\Program Files\Mozilla Firefox
. Aby uzyskać informacje o tym, jak dołączyć Firefox, przejdź tutaj .)Na przykład wpisanie
calc
(.exe
można pominąć) w wierszu poleceń w systemie Windows spowoduje uruchomienie kalkulatora Windows.* Możesz dodać obsługę rozszerzeń plików innych niż
.exe
poprzez edycję%PATHEXT%
.Inny
Inne zmienne mogą informować programy, jakiego rodzaju terminal jest używany (
TERM
w systemie Linux / Mac OS X) lub, w systemie Windows, gdzie znajduje się folder Windows (np.%WINDIR%
JestC:\Windows
).Tworzenie nowych zmiennych środowiskowych
W systemach Windows, Linux i Unix możliwe jest tworzenie nowych zmiennych środowiskowych, których wartości są następnie udostępniane wszystkim programom po uruchomieniu.
Można tego użyć podczas pisania skryptów lub programów, które są instalowane lub wdrażane na wielu komputerach i muszą odwoływać się do wartości specyficznych dla tych komputerów. Podczas gdy podobny efekt można osiągnąć za pomocą ustawień konfiguracji specyficznych dla programu, łatwiej jest to zrobić za pomocą zmiennej środowiskowej, jeśli wiele programów potrzebuje dostępu do tej samej wartości.
Windows
GUI
Otwarte
Control Panel » System » Advanced » Environment Variables
.Wpisz
control sysdm.cpl,,3
w oknie dialogowym Uruchom ( + R) i kliknijEnvironment Variables
.Do edycji zmiennych użytkownika możesz także wpisać
w oknie dialogowym Uruchom.
Kliknij prawym przyciskiem myszy (Mój) Komputer i kliknij Właściwości lub po prostu naciśnij + Break.
Advanced » Environment Variables
.Advanced system settings » Environment Variables
.Istnieje wiele innych sposobów dotarcia do tego samego miejsca, na przykład poprzez wpisanie „zmiennych środowiskowych” w polu wyszukiwania Menu Start / ekran i tak dalej.
Zmienne środowiskowe w systemie Windows są podzielone na wartości specyficzne dla użytkownika i maszyny / systemu. Możesz tam przeglądać i edytować ich wartości. Ich aktualne wartości po uruchomieniu są udostępniane wszystkim programom.
Dostępny jest również Rapid Environment Editor , który pomaga ustawiać i zmieniać zmienne środowiskowe w systemie Windows bez potrzeby wchodzenia w ustawienia systemowe. Innym programem typu open source dla systemu Windows, za pomocą którego można bardzo wygodnie edytować środowisko ścieżki, jest Edytor ścieżki .
Wiersz poleceń
Format
Zmienne środowiskowe w systemie Windows są oznaczone znakami procentowymi (%) otaczającymi nazwę:
Echo
Aby wyświetlić wartość zmiennej środowiskowej
cmd.exe
, wpiszecho %name%
.zestaw
Aby utworzyć / ustawić zmienną, użyj
set varname=value
:Aby dodać / dodać zmienną, użyj
set varname=value;%varname%
:Zmienne środowiskowe ustawione w ten sposób są dostępne (przez resztę) czasu trwania wiersza polecenia, w którym są ustawione, i są dostępne dla procesów, które są uruchamiane po ustawieniu zmiennych.
setx
Aby utworzyć / ustawić zmienną na stałe , użyj
setx varname "value"
:W przeciwieństwie do tego
set
nie ma znaku równości, a wartość powinna być ujęta w cudzysłów, jeśli zawiera spacje. Zauważ, że zmienne mogą rozwinąć się do ciągu ze spacjami (np.%PATH%
Staje sięC:\Program Files
), dlatego najlepiej jest umieszczać cudzysłowy wokół wartości zawierających dowolne zmienne.Musisz ręcznie dodać
setx
do wersji systemu Windows wcześniejszej niż Vista.Narzędzia obsługi systemu Windows XP z dodatkiem Service Pack 2
Lista zmiennych środowiska Windows
Oto lista domyślnych zmiennych środowiskowych wbudowanych w system Windows. Niektóre przykłady to:
%WINDIR%
,%SystemRoot%
,%USERPROFILE%
, i%APPDATA%
. Podobnie jak większość nazw w systemie Windows, wielkość liter nie uwzględnia wielkości liter.Pochodne Unixa (FreeBSD, GNU / Linux, OS X)
Zmienne środowiskowe w systemie Linux są poprzedzone znakiem dolara ($), takim jak $ HOME lub $ HOSTNAME. Wiele dobrze znanych i standardowych zmiennych zapisanych jest dużymi literami, aby to dokładnie zaznaczyć. Pamiętaj, że w nazwach zmiennych rozróżniana jest wielkość liter, co oznacza, że $ User i $ USER są całkowicie niezwiązane z punktu widzenia powłoki.
Pochodne uniksowe definiują ogólnosystemowe zmienne w skryptach powłoki zlokalizowanych głównie w
/etc
folderze, ale wartości specyficzne dla użytkownika mogą być podane tym zmiennym w skryptach znajdujących się w folderze domowym (np./etc/profile
,$HOME/.bash_profile
)..profile
Plik w katalogu domowym jest częstym miejscem do definiowania zmiennych użytkownika.Ustawianie zmiennych
Te pliki są zwykłymi skryptami powłoki i mogą zawierać więcej niż deklaracje zmiennych środowiskowych. Aby ustawić zmienną środowiskową, użyj
export
. Aby wyświetlić aktualnie zdefiniowane zmienne środowiskowe w terminalu, uruchomenv
.export
Komenda jest standardowym sposobem definiowania zmiennych. Składnia jest bardzo intuicyjna. Wynik jest identyczny dla tych dwóch linii, ale pierwsza alternatywa jest lepsza w przypadku, gdy konieczna jest przenośność w stosunku do powłoki Bourne sprzed POSIX.Powłoka C i jej potomkowie używają zupełnie innej składni; tam polecenie jest
setenv
.Zobacz projekt dokumentacji Linuksa, Path HOWTO, aby uzyskać bardziej szczegółową dyskusję na ten temat.
Być może wbrew powszechnemu przekonaniu OS X jest bardziej „uniksowy” niż Linux. Oprócz wspomnianych już plików $ PATH można modyfikować w tych plikach:
/etc/paths
zawiera wszystkie domyślne katalogi dodane do ścieżki, takie jak/bin
i/usr/sbin
./etc/paths.d
- powszechnie używany przez instalatorów, aby udostępnić udostępniane przez nich pliki wykonywalne z powłoki bez dotykania ogólnosystemowych lub specyficznych dla użytkownika plików konfiguracyjnych. Te pliki zawierają po prostu jedną ścieżkę w wierszu. np. / Programs / Mozilla / Calendar / bin.Linki zewnętrzne:
źródło
SETX
do wprowadzania trwałych zmian. Ma nieco inną składnię.SETX
należy dodać zWindows Server 2003 Resource Kit
wcześniejszych wersjiNT
.WM_SETTINGCHANGE
mi się wydaje, i dlatego powiadamiają zainteresowane strony o nowych wartościach. Dlatego zapytałem, jak to się tutaj stosuje. Pogrubienie tekstu nie zmienia jego znaczenia i nie ułatwia zrozumienia, podobnie jak powtarzanie tego samego zdania, tylko głośniejsze. Zredagowałem ten post kilka godzin temu, aby wyraźnie wspomnieć, że wartości otrzymywane przez procesy są ustawiane po ich uruchomieniu.WM_SETTINGCHANGE
? Windows API? To nie jest publiczność tego pytania!) Może nie być dobrym pomysłem, ponieważ może dezorientować czytelnika zamiast wyjaśniać, o czym te zmienne są .Ten post jest z bardziej technicznego punktu widzenia niż Daniel, ale nie wyjaśnia tyle pojęć.
Artykuł w Wikipedii jest również doskonałym odnośnikiem.
Linux i większość BSD
W większości powłok wiersza poleceń tymczasowe zmienne środowiskowe są ustawiane za pomocą poleceń
export
(sh, bash, zsh) lubsetenv
(csh, tcsh).Przykłady poprzedzania
$HOME/bin
do$PATH
w bash lub zsh:(W tym konkretnym przypadku nie
export
jest konieczne, ponieważPATH
jest już częścią środowiska.)csh, tcsh:
Trwałe zmienne środowiskowe można ustawić na kilku oddzielnych etapach:
Zaloguj sie:
Konfiguracja sesji logowania: Linux
pam_env
, który zwykle czyta/etc/environment
Logowanie do terminala: pliki „profilu” powłoki.
bash
wykorzystuje/etc/profile
i pierwsza z:~/.bash_profile
,~/.bash_login
,~/.profile
.bash(1)
Sekcja strony podręcznika Wywołanie .Często plik profilu użytkownika zawiera również jawne wywołanie
~/.bashrc
.zsh
:zsh(1)
Sekcja strony podręcznika Pliki uruchamiania / zamykania .csh
i inne powłoki: patrz odpowiednie strony podręcznika.Logowanie graficzne: Nie jestem pewien; może się różnić w zależności od menedżera logowania. GDM wydaje się czytać
~/.profile
w moim systemie.Otwarcie okna terminala:
bash
wykorzystuje/etc/bash.bashrc
i~/.bashrc
.Seria Windows NT
W wierszu polecenia (
cmd.exe
) użyjset name=value
do zmiany zmiennych środowiskowych dla tego okna.Aby dołączyć
c:\bin
do%PATH%
, użytkowania:Wpływa to tylko na ten
cmd.exe
proces i wszelkie nowe procesy z niego uruchomione.Aby wprowadzić trwałe zmiany, użyj Panelu sterowania → System → Zaawansowane → Zmienne środowiskowe . ( dokumenty )
Uwaga: Podczas gdy ustawienia użytkownika zwykle zastępują ustawienia systemowe,
PATH
zmienna jest obsługiwana specjalnie: zarówno ustawienia systemowe, jak i ustawienia użytkownika są scalane w ostateczną wartość.Zmiany są zapisywane w Rejestrze (patrz poniżej) i natychmiast stosowane do wszystkich nowych procesów utworzonych przez Eksploratora (powłokę graficzną), na przykład za pośrednictwem menu Start.
Zmienne środowiskowe dla całego systemu są przechowywane w rejestrze
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
i ładowane podczas uruchamiania systemu.Środowisko użytkownika jest przechowywane
HKCU\Environment
i ładowane podczas logowania użytkownika.Domyślnie system szuka również
set
poleceń wAUTOEXEC.NT
pliku.MS-DOS, 16-bitowy system Windows, seria Windows 9x
W MS-DOS Prompt (
command.com
) użyjset name=value
, podobnie jak w WinNT.Podobnie,
set
interakcyjne działanie wpływa tylko na to jednocommand.com
wystąpienie, wraz z wszelkimi nowymi uruchomionymi z niego procesami.Aby wprowadzić trwałe zmiany, dodaj lub edytuj odpowiednie
set
linie wC:\AUTOEXEC.BAT
, a następnie uruchom ponownie.explorer.exe
z okna Monit MS-DOS .VMS
(Nie mogłem się oprzeć.)
DCL nie ma pojęcia „ścieżka”, ale można wprowadzić różne definicje symboli i poleceń
SYS$LOGIN:LOGIN.COM
.źródło
DCL$PATH
dla „ automatycznych poleceń obcych ”.W przypadku globalnych (nieterminalnych) zmiennych środowiskowych
bash
powłokiPATH
postępuję zgodnie z konwencją używaną podczas instalacji maszyny Wirtualnej Ubuntu - inne powłoki będą się różnić:Zastrzeżenie: Rozruch sekwencja cała powłoka, która
.bashrc
,.profile
itp pliki są pozyskiwane w jakiej kolejności ?, kiedy mam do ponownego logowania, aby uzyskać wgląd do nowo zdefiniowanych zmiennych, aliasy itd ?, jaka jest różnica między logowania , interaktywna i nieinteraktywna powłoka - używamcron
? i dlaczego, kiedy to robię,. ~/.bashrc
moja głupiaPATH
zmienna rośnie coraz dłużej? to kluczowe pytania, które przychodzą mi na myśl, gdy myślę o mojejPATH
zmiennej.W rzeczywistości właśnie całkowicie napisałem cały zestaw plików startowych bash, czerpiąc pomysły z plików szkieletu Ubuntu i cygwin, a oto niektóre z moich stron:
PATH
i inne globalne zmienne środowiskowe (tj.LD_LIBRARY_PATH
) Zmienne w.profile
;~/.profile
do źródła,$HOME/.bashrc
jeśli istnieje;~/.bashrc
z testem do wykonania interaktywnego, w przeciwnym razie wyjdź;shopt
monity, kontrolę historii, konfigurację terminali, definicję funkcji itp. (Konfiguracja związana z interaktywnymi) w części~/.bashrc
chronionej, aby działała tylko w trybie interaktywnym;.profile
i.bashrc
działa zgodnie z oczekiwaniami. To znaczy, chyba że istnieją szczególne wymagania, aby zrobić inaczej, usuń~/.bash_profile
&~/.bash_login
;~/.bashrc
plik, a następnie po prostu go pobieram,. ~/.bashrc
aby uzyskać zmiany w mojej bieżącej powłoce.PATH
, muszę zmodyfikować i pobrać moje~/.profile
;.profile
.To moje 2 centy na ten temat.
źródło
P: CO TO są zmienne środowiskowe?
Odp .: Zmienne środowiskowe są podobne do zmiennych w dowolnym języku programowania. W przypadku systemów Windows lub Unix przechowują różne wartości, aby umożliwić programom i zadaniom uzyskanie niezbędnych informacji o systemie operacyjnym lub informacji o środowisku. Na przykład:
USERPROFILE: katalog użytkowników w plikach systemu operacyjnego.
MAIL: gdzie można znaleźć pocztę użytkownika w plikach systemu operacyjnego.
P: CO konkretnie jest zmienną PATH?
Odp .: Zmienna PATH ustawia ścieżki katalogu, które będą sprawdzane podczas wykonywania poleceń, zarówno dla poleceń RUN, jak i dla wewnętrznych wywołań programów. Zapobiega to znajomości miejsca instalacji przez program w celu wywołania innych procesów wykonywalnych.
Sprawdza zmienną PATH systemu środowiska Windows i testuje każdą lokalizację dla danego pliku wykonywalnego. W ten sposób dodanie położenia do zmiennej PATH umożliwia bezpośrednie wywołanie pliku wykonywalnego.
Zgodnie z tym artykułem z Wikipedii :
P: JAK dodać lokalizację do zmiennej PATH?
Odp .: Musisz edytować ciąg zmiennej zmiennej PATH Zmiennych środowiskowych, aby uwzględnić lokalizację pliku wykonywalnego.
Jeden ze sposobów na to opisano tutaj :
C:\wamp\bin\php\php5.5.12;
Mam nadzieję, że to wyjaśnia pewne zamieszanie.
źródło