Wiersz poleceń i PATH

Gdy często pracujemy z konsolą, przydaje się, aby do najczęściej używanych programów i narzędzi dostawać się poprzez wprowadzenie jego nazwy w konsoli w dowolnej lokalizacji. Aby to działało dany program musi znajdować się w katalogu, którego ścieżka zawarta jest w zmiennej systemowej PATH, określającej listę lokalizacji jakie zostaną przeszukane przez interpreter poleceń w poszukiwaniu pliku wykonywalnego.

Innym rozwiązaniem jest trzymanie wszystkich aplikacji i plików exe w jednym katalogu co w przypadku systemu Windows jest chybionym pomysłem.

Pozostaje korzystanie z path, ale ustawianie i modyfikowanie tej zmiennej systemowej w tradycyjny sposób jest dosyć męczące i nieporęczne.

Możemy wykorzystać polecenie path lub set linii poleceń.

Idealnym rozwiązaniem jest trzymanie wszystkich ścieżek w jednym pliku i ustawianie zmiennej path przy uruchomieniu konsoli. Zmiany zmiennej path będą tylko ważne dla danej instancji wiersza poleceń i dla czasu jego życia – do zakończenia jego działania.

 Dla mnie jest to idealne bo właśnie ułatwić ma to prace z konsoli i uniezależnić różne skrypty i makefilsy od wszelakich bezwzględnych, czy innych sztuczek ze ścieżkami  zaszytymi w kodzie tych skryptów.

Warto wspomnieć, że nie należy wszystkiego „pakować” w nasz plik ścieżek, podstawowe ścieżki odwołujące się do systemowych miejsc, lub innych, gdzie umieszczamy DLLki naszych bibliotek warto pozostawić w głównym systemowym miejscu, aby były widoczne przez cały system i nie wynikały różne problemy ze znalezieniem wymaganych bibliotek przy uruchamianiu aplikacji.

Wróćmy do naszego rozwiązania z plikiem ścieżek.

Najlepiej, aby w pliku jedna linia odzwierciedlała jedną ścieżkę, oraz aby linie puste i rozpoczynające się od ; (przydatne dla komentarzy) były pomijane:

C:\Perl64\bin
C:\Perl64\site\bin
 
; toolsy
C:\tools\sed
C:\tools\ZIP
 
C:\Program Files (x86)\Bakefile
C:\Program Files (x86)\wxFormBuilder
 
; SVN/CVS
C:\Program Files\SlikSvn\bin\
C:\Program Files\TortoiseSVN\bin
C:\Program Files (x86)\CVSNT

Skrypt parsujący ten plik (C:\path.txt) i ustawiający zmienną path jest, o dziwo, bardzo prosty:

@echo off
for /f "eol=; delims=" %%i in (C:\path.txt) do set path=!path!;%%i
echo on

Aby skrypt ten zadziałał  interpreter poleceń musi zostać uruchomiony z przełącznikiem /v:on włączającym opóźnione rozwijanie zmiennych środowiskowych. Wtedy ciąg !path! będzie rozwijany w czasie wykonania do aktualnej wartości zmiennej systemowej path.

Bez tego, przy użyciu %path%, zmienna ta byłaby rozwinięta tylko raz przy czytaniu instrukcji for, efektem czego byłoby dodanie tylko ostatniej ścieżki z pliku do zmiennej path. Więcej informacji na ten temat można znaleźć w helpie interpretera poleceń (cmd) i polecenia set.

Warto dodać sobie odpowiedni skrót do QuickLaunch do szybkiego i prostego uruchamiania konsoli wraz z automatycznym uruchomieniem naszego skryptu przy stracie. Elementem docelowym tego skrótu będzie:

%ComSpec% /v:on /k C:\setvar.bat

A w polu „Rozpocznij w” możemy wpisać ścieżkę jaka zostanie ustawiona jako bieżącą po uruchomieniu konsoli, można wykorzystać zmienne systemowe, np.

%HOMEDRIVE%%HOMEPATH%

dla ustawienia naszego katalogu domowego.

Innym, bardzo przydatnym ułatwieniem jest dodanie do menu kontekstowego folderu pozycji uruchamiającej wiersz poleceń wraz z ustawieniem jako bieżącego katalogu folderu na którym rozwinęliśmy menu.

Aby dodać taką pozycje do menu wystarczy dodać kilka odpowiednich kluczy i wartości w rejestrze dla gałęzi:

HKEY_ LOCAL_MACHINE/Software/Classes/Folder/shell

Dokładniej to dla podanej gałęzi należy dodać nowy klucz o dowolnej nazwie, np. cmd. Domyślna wartość tego klucza określa nazwę pozycji menu, więc wpisujemy „Wiersz poleceń”.

Następnie dodajemy kolejny klucz, tym razem do „cmd”, o nazwie „command„, którego wartość będzie akcją jaka zostanie wykonana po wybraniu danej pozycji menu, w najprostszym wypadku byłoby to:

cmd.exe /k pushd %L

ale my chcemy, wykorzystać nasz nowy skrypcik z ustawianiem  zmiennej path, więc wartość tego klucza będzie wyglądać następująco:

cmd.exe /v:on /k pushd %L & C:\setvar.bat

Tym sposobem ułatwiliśmy sobie nieco korzystanie z naszej konsoli, nie musimy się męczyć z ustawianiem bieżącego katalogu, co czasem przy trochę zagnieżdżonych katalogach jest nieco flustrujące ;)

Dla tych wszystkich, którym nie chce się klikać, mogą skorzystać z możliwości importu do rejestru:

Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmd]
@="Wiersz poleceń"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmd\command]
@="cmd.exe /v:on /k pushd %L & C:\\setvar.bat"

wystarczy zapisać jako plik *.reg i odpalić…

2 przemyślenia nt. „Wiersz poleceń i PATH”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *