Bałam się zmiennymi środowiskowymi na moim komputerze Mac, próbując nauczyć się ich używać, i użyłem polecenia, w nano ~/.bash_profile
którym następnie dodałem wiersz, HOME=/Users/MyCompName/Desktop
aby zaktualizować zmienną domową.
Ta zmiana działała i można ją zobaczyć, gdy używam printenv
do przeglądania wszystkich zmiennych środowiskowych, ale kiedy poszedłem zmienić, HOME
nie mogłem ~/.bash_profile
już jej znaleźć . Gdzie to poszło?
~
oznacza$HOME
$HOME
, to też~
zostanie przedefiniowanyOdpowiedzi:
Jest w tym samym miejscu.
Zanim zmiana
~
rozwinie się w coś podobnego/Users/YourUserName
, powłoka znajdzie ją.bash_profile
tam. Po pobraniu plik~
rozwija się do innej ścieżki, więc~/.bash_profile
nie wskazuje już odpowiedniego pliku. Jest tak, ponieważ w tym kontekście~
oznacza$HOME
.Jeśli znasz pełną ścieżkę do swojego katalogu domowego, możesz jej użyć zamiast
~
. W Macu prawdopodobnie wyglądałoby to tak:Lub pozwól swojemu Bashowi poszukać twojego katalogu domowego w bazie danych użytkowników zamiast tylko patrzeć
$HOME
. Nie wymaga to od Ciebie zapamiętywania:Modyfikowanie
HOME
zmiennej bez zmiany rzeczywistego katalogu domowego nie jest najlepszym pomysłem. Zmiana katalogu domowego dowolnego użytkownika jest zadaniem administracyjnym, zwykle zwykli użytkownicy nie mogą tego zrobić.źródło
.bash_profile
ma formę skryptu Bash. Możesz uruchomić skrypt lub pobrać go. Uruchomienie oznacza utworzenie podpowłoki i wykonanie skryptu wiersz po wierszu. Sourcing oznacza wykonanie skryptu w bieżącej powłoce. Niektórych zadań, które mają wpływać na bieżącą powłokę, nie można wykonać w podpowłoce; zmiana zmiennej dla bieżącej powłoki jest jedną z nich. Dlatego niektóre pliki są pobierane, a nie wykonywane w podpowłoce. Aby ręcznie pobrać plik, użyj. file
(.
jest określony przez POSIX) lubsource file
(source
jest rozszerzeniem innym niż POSIX rozumianym przez kilka powłok).nano ~YourUserName/.bash_profile
zamiast tego użyć . Spowoduje to wyszukiwanie twojego katalogu domowego w bazie danych użytkowników, a nie tylko patrzenie na $ HOME.