Kiedy uruchamiam export $PATH w bash, pojawia się błąd not a valid identifier. Dlaczego?

Komentarze

  • W powłokach bash i innych $ jest „wartością”. ' ponownie eksportujesz zmienną PATH, nie uzyskujesz dostępu do jej wartości, więc ' s export PATH bez $.
  • Częsty podobny problem: askubuntu.com/questions/529919/ …

Odpowiedź

Uruchomienie export $PATH spowoduje próbę wyeksportowania zmiennej o nazwie równej wartości z $PATH (po podziale na słowa ). Oznacza to, że jest to równoznaczne z napisaniem czegoś takiego jak export /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin. A ponieważ /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin nie jest prawidłową nazwą zmiennej, kończy się niepowodzeniem. To, co chcesz zrobić, to export PATH.

export (odpowiednik declare -x) w Bash po prostu udostępnia zmienną podpowłoki.

Aby bezpiecznie i czytelnie wydrukować wartość zmiennej, użyj printf %q "$PATH".

Komentarze

  • Zasadniczo utworzyłem kilka zmiennych, JAVA_HOME, MAVEN_HOME i chcę się upewnić, że bash je poprawnie ustawił, więc eksportuję $ PATH, aby sprawdzić, czy zmienne ścieżki zostały poprawnie ustawione na zmienną PATH
  • To zależy od powłoki, a nie od systemu operacyjnego. Byłbym zaskoczony, gdyby export kiedykolwiek działał w ten sposób w Bash.
  • Dodatkowo zmienna PATH jest już wyeksportowany i nie musi zostać wyeksportowane ponownie.

Odpowiedz

Następujące polecenie export $PATH=somePath zwróci not a valid identifier, a to ze względu na $ przed zmienną PATH.

rozwiązanie:

export PATH=somePath

Komentarze

  • To to dokładnie odpowiada na moje pytanie. Dzięki Kevin

Odpowiedź

Powinieneś użyć tego w ten sposób:

export PATH=$PATH:/something/bin 

Zamiast:

export $PATH=$PATH:/something/bin 

wystarczy usunąć znak $ z lewej strony strony.

Odpowiedź

Prawdopodobnie musiałeś dołączyć $ PATH do istniejącej zmiennej PATH?

export PATH=$PATH:/something/bin 

Komentarze

  • OK, to w tym samym parku piłek co pytanie, ale w lewym polu .

Dodaj komentarz

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