Tło: Jeden z moich kolegów, który nie pochodzi z Linuksa, zapytał mnie o użycie ./
przed niektórymi poleceniami, a nie innymi, więc wytłumaczyłem mu, jak PATH
działa i jak wybierane są pliki binarne. Jego odpowiedź była taka, że był głupi i po prostu nie musiał pisać ./
przed poleceniami.
Pytanie: Czy istnieje sposób na łatwą modyfikację zachowania powłoki, tak aby $PWD
zawsze był pierwszym elementem PATH
?
~/bin
i uczynić go częściąPATH
? To także zapewnia porządek.PATH
(co jest zwykle źródłem takich rozważań).Odpowiedzi:
Jeśli naprawdę chcesz, możesz to zrobić, przygotowując się
.
na swoją ścieżkę:Jest to jednak zły pomysł, ponieważ oznacza, że twoja powłoka wybierze dowolne polecenie w bieżącym katalogu zamiast innych. Jeśli ktoś (lub jakiś program) upuści złośliwe
ls
polecenie w katalogu, którego często używasz, masz problem ...źródło
.
na początku twójPATH
był domyślny dla zwykłych użytkowników (jeśli stworzyłem użytkownika z „sam” na HP-UX, przynajmniej; nie jestem pewien co do starego SunOS). Później to ustawienie domyślne zostało usunięte ze względów bezpieczeństwa. Jeśli masz.
ten ostatni elementPATH
, wciąż ktoś może mieć nadzieję na typowe literówki./tmp/sl
skrypty do pranków, aby atakować użytkowników za pomocą takich ŚCIEŻEK. W Debianie i pochodnych zainstalujsl
pakiet, aby dowiedzieć się, jak często piszeszsl
zamiastls
../
kiedy chcesz wywoływać polecenia w bieżącym katalogu. Lub, jeśli to zwykły katalog bieżący/project/under/development/bin
, a następnie dodać , że do TwojegoPATH
. Rozwiązuje to przypadek użycia przez programistę. Umieszczenie.
na początkuPATH
to zły pomysł, kropka.Chociaż nie jest to bezpośrednia odpowiedź na twoje pytanie, najlepszą praktyką byłoby utworzenie
bin
katalogu w katalogu domowym jako/home/user/bin
:Umieść tam swoje osobiste skrypty.
PATH
Byłby ruch w kolejności zdefiniować i wykonać swoje skrypty bez.
potrzeby.źródło
Musisz mieć. na początku zmiennej PATH:
źródło