Kiedy echo $ PATH uzyskać to: Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools
.
Chcę usunąć niektóre ścieżki z tego, ale po otwarciu pliku za pomocą polecenia vim /etc/paths
otrzymuję następujące wyniki:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Czy plik / etc / paths różni się od zmiennej $ PATH?
/etc/paths
w swoim, ale biegnę10.4.11
i od tamtej pory wszystko prawdopodobnie się zmieniło/etc/paths
służy do generowania domyślne$PATH
, które można później zmodyfikować~/.bashrc
lub~/.profile
Odpowiedzi:
/etc/paths
jest częścią tego, co jest używane do konfiguracji$PATH
procesów powłoki. Po otwarciu nowego okna terminala zostaniebash
uruchomione, które uruchamia kilka skryptów uruchamiania:/etc/profile
ORAZ~/.bash_profile
LUB (jeśli to nie istnieje)~/.bash_login
LUB (jeśli to nie istnieje)~/.profile
. Te skrypty konfigurują środowisko powłoki, w tym$PATH
.Jedną z rzeczy
/etc/profile
jest uruchamianie/usr/libexec/path_helper
, które czyta/etc/paths
i wszelkie pliki w/etc/paths.d
, i dodaje ich zawartość$PATH
. Ale to tylko punkt wyjścia; własny skrypt startowy (jeśli istnieje) może dodawać$PATH
, edytować, całkowicie zastępować itp.Wygląda mi na to, że twój skrypt startowy (i / lub rzeczy, które uruchamia) dodaje szereg wpisów do podstawowego zestawu, z którego pobiera
/etc/paths
. Na początku dodaje się „Users / myusername / .node_modules_global / bin: /Users/mac/.node_modules_global/bin:”$PATH
(co oznacza, że te katalogi będą wyszukiwane w pierwszej kolejności) i „: / Users / mac / Library / Android / sdk / platform-tools: / platform-tools ”dodaje się na końcu. Jeśli chcesz dokładnie wiedzieć, co je dodaje, musisz spojrzeć na skrypt startowy.Przy okazji, ten proces konfiguracji
$PATH
dotyczy tylko powłok bash „login”. Wszystko, co uruchamia powłoka bash, odziedziczy$PATH
po niej, więc prawdopodobnie ma zasadniczo to samo. Powłoki bash niezalogowane wykonują nieco inny proces instalacji. Inne powłoki i rzeczy, które w ogóle nie zaczęły się od powłoki (np. Zadania cron), mogą mieć zupełnie inne cechy$PATHs
.źródło
/usr/local/bin/bash
. Zainstalowanychbrew
bez-l
argumentu)/usr/libexec/path_helper
nie jest używany i/usr/local/bin
domyślnie nie jest zawarty w pliku$PATH
. Aby użyćpath_helper
w skrypcie lub interaktywnie, polecenie toeval $(/usr/libexec/path_helper)
.Pierwsze miejsca, w których chciałbym sprawdzić zmiany, to:
Jeśli używasz czegoś, co nie jest Bash, sprawdź pliki konfiguracyjne, aby zobaczyć jakiekolwiek informacje o ŚCIEŻCE.
źródło