Jak mogę dodać ścieżkę do zmiennej środowiskowej PATH?

11

Chcę dodać ścieżkę do PATHzmiennej środowiskowej?

Próbowałem export PATH=/mypath:$PATHi działa. Ale następnym razem, gdy uruchamiam Terminal, moja nowa ścieżka nie jest już PATHzmienną środowiskową.

Jak mogę dodać ścieżkę do PATHzmiennej środowiskowej? i powinno tam być również przy następnym uruchomieniu terminalu.


Mam z tym teraz problemy, sztuczka, która działała wcześniej, wydaje się już nie działać.

Próbowałem z:

echo 'export GRADLE_HOME=/Users/jonas/gradle-1.2/' >> ~/.profile
echo 'export PATH=GRADLE_HOME/bin:$PATH' >> ~/.profile

aby dodać dwie zmienne środowiskowe. Następnie mój ~/.profileplik zawiera następującą treść:

export GRADLE_HOME=/Users/jonas/gradle-1.2/
export PATH=GRADLE_HOME/bin:$PATH

Ale kiedy uruchamiam nowe okno terminala i wpisuję gradle(polecenie, do którego dodałem PATH), pojawia się komunikat, że polecenie nie istnieje. Jeśli uruchomię polecenie /Users/jonas/gradle-1.2/bin, działa dobrze!

Jonas
źródło
Jeśli zdarzy Ci się coś zepsuć, zobacz także: Zresetuj zmienną PATH
Jari Keinänen
1
Przypisanie do ŚCIEŻKI (drugi eksport) powinno być z $ GRADLE_HOME
nohillside

Odpowiedzi:

5

echo 'export PATH=/my/path:$PATH' >> ~/.bash_profile powinien załatwić sprawę!

Jeśli używałeś echo 'export PATH=/my/path:$PATH' > ~/.bash_profilelub jakąkolwiek taką odmianę, nadpisałeś zawartość swojego profilu!

Yasyf
źródło
9

OSX odczytuje następujące pliki w kolejności, gdy zostanie otwarty terminal:

/etc/profile
~/.bash_profile
~/.bash_login   
~/.profile     

Więc umieść dodatek ścieżki w jednym z nich. Zwykle dodawam dodatki~/.bash_profile

robzolkos
źródło
2
Dzięki, użyłemecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas
3

Oprócz miejsc wymienionych przez @RobZolkos, przegląda się również powłoka logowania /etc/pathsi pliki w środku /etc/paths.d/. Jeden wpis ścieżki w wierszu w tych plikach.

Zobacz /etc/profilei stronę podręcznika dla path_helper.

Harald Hanche-Olsen
źródło
Ok dzięki! ale największym problemem było to, jak dodać ścieżkę. Ale znalazłemecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas
@Jonas: Zdałem sobie sprawę, że twój problem został rozwiązany. Moja odpowiedź była przeznaczona dla przyszłych czytelników, aby mogli zobaczyć wszystkie dostępne opcje.
Harald Hanche-Olsen
2

Stare pytanie, ale dla użytkowników MacOS X Catalina:

Utwórz / edytuj ~/.zshenv:

# comment for yourself
PATH="$PATH:to/your/path"

Zauważ, że modyfikacja PATHw ~/.zprofilelub ~/.zshrcnieprawidłowa powinna być ~/.zshenv.

Jeśli musisz coś dodać PATH, dalej utwórz / edytuj ~/.zprofile:

# apply the prepend to PATH
[[ -r ~/.zshenv ]] && source ~/.zshenv
# remove duplicate in PATH
typeset -U PATH

Odniesienie: http://zsh.sourceforge.net/Intro/intro_3.html

Pada deszcz
źródło
Co masz na myśli mówiąc „Jeśli musisz przyłączyć się do ŚCIEŻKI” i dlaczego nie można tego zrobić .zshenv?
nohillside
@nohillside: Przepraszam za złą gramatykę, ale dobre pytanie. Jeśli spróbujesz poprzedź coś do PATHw ~/.zshenvprzez PATH="to/your/path:$PATH", bez wierszy ~/.zprofile, to nie będzie działać. Coś wywołania path_helperprzeniesie je /usr/local/bin/:/usr/bin:...na przód PATH.
Pada
Krótko mówiąc, jest to kwestia kolejności ładowania. path_helperzostanie wykonany po, ~/.zshenvale wcześniej ~/.zproflie. A z moich dzisiejszych badań poleciłbym użycie dowiązania symbolicznego zamiast modyfikacji PATH, co jest znacznie prostsze.
Pada
0

Wstaw .bashrc następujące wiersze kodu:

function pathadd {              # Add new element to PATH
  if ! echo $PATH | egrep -q "(:|^)$1(:|$)"
  then if [ "$2" = "after" ]
       then PATH="$PATH:$1"
       else PATH="$1:$PATH"
       fi
  fi
}

następnie wpisz polecenie takie jak: pathadd /opt/local/binlub pathadd /opt/local/bin after.

Maurizio Loreti
źródło
Zwróć uwagę na dwie funkcje w init-github.com/fink/base-files/blob/master/init.sh.in
fd0