Używam zsh
jako mojej powłoki i próbuję skonfigurować środowisko.
Zwykle definiuję swoją $JAVA_HOME
zmienną, tworząc plik:
/etc/profile.d/java.sh
o następującej treści
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
potem wylogowuję się i loguję ponownie i wszystko działa, ale z jakiegoś powodu PATH
zmienna nie jest ustawiona. Rozpoznaje JAVA_HOME
, ale nie nowy PATH
, zobacz ten fragment terminalu:
~ echo $JAVA_HOME
/usr/lib/jvm/jdk1.8.0_05
~ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
i potwierdziłem to, próbując uruchomić polecenie z JVM
~ java -version
zsh: command not found: java
PATH
nie obejmuje $JAVA_HOME
, jak powinien. czy jest coś jeszcze, co powinienem sprawdzić?
Sprawdziłem, że jeśli uruchomię:
source /etc/profile.d/java.sh
wszystko działa poprawnie, a moje zmienne ustawiają się tak, jak powinny, ale czy skrypty nie powinny być /etc/profile.d
uruchamiane automatycznie?
environment-variables
zsh
Rodrigo Sasaki
źródło
źródło
~/.profile
zamiast tego próbowałeś edytować i umieszczać tam zmienne? Być możePATH
jest to nadpisywane gdzie indziej/etc/profile.d/
.Odpowiedzi:
Z mojego punktu widzenia najlepszym sposobem jest dodanie do
~/.zshrc
pliku następujących linii (jeśli jeszcze go nie masz, to utwórz go):Następnie uruchom ponownie
zsh
lub po prostu uruchom,source ~/.zshrc
a następnie ŚCIEŻKA powinna być dokładnie taka, jak chcesz.Lub, jeśli chcesz, aby zmiana obejmowała cały system, dodaj poprzedni kod na końcu
/etc/zsh/zshenv
pliku.Ale w żadnym wypadku nie używaj
/etc/profile.d
do automatycznego uruchamiania skryptówzsh
. Ten katalog jest przydatny tylko dlabash
powłoki, a niezsh
jak w twoim przypadku. Aby to zrozumieć, otwórz/etc/profile
plik, który jest plikiem inicjującym bash , aw żadnym wypadku nie jest zsh plikiem inicjującym , a zobaczysz gdzieś na końcu pliku:Tak, skrypty z
/etc/profile.d
katalogu będą automatycznie uruchamiane wzsh
tylko jeśli dodać do poprzedniego kodu w pliku inicjującym zsh, jak/etc/zsh/zprofile
na przykład, czy źródło/etc/profile
w/etc/zsh/zprofile
pliku.źródło
~/.zprofile
może być lepszy niż~/.zshrc
.Uważam, że umieszczanie wszystkiego w jednym
.zshenv
pliku szybko staje się trudne do zarządzania. Zalecam zainstalowanie oh-my-sh, a następnie umieszczenie różnych dostosowań (zmiennych env, funkcji) w.oh-my-sh/custom/
katalogu jako osobnych.zsh
plików.Odkryłem również, że to podejście działa bezbłędnie, gdy ssh'ing do maszyny podczas modyfikowania zmiennych env, takich jak
PATH
. Działa też bardzo ładnie w połączeniu z vcsh do tworzenia kopii zapasowych i synchronizacji dostosowań.źródło
~/.ssh/config
Od
JAVA_HOME
jest ustawiony, potwierdziłeś, że te skrypty są pozyskiwane automatycznie, prawda?Jedynym logicznym wyjaśnieniem jest to, że
PATH
jest ustalone później. Powinien być pierwotnie ustawiony przez PAM, który czyta/etc/environment
i, o ile wiem, dzieje się to przed/etc/profile.d/*.sh
pozyskaniem plików. Być może zsh działa pod tym względem inaczej niż bash.źródło
Właśnie napotkałem ten problem lokalnie po uruchomieniu aktualizacji. Wygląda na to, że głównym problemem jest to, że Drush nie wie, gdzie znaleźć legalną kopię php zawierającą pdo. Na szczęście obsługuje ukrywanie tej ścieżki w zmiennej środowiskowej, więc zrobiłem to w wierszu poleceń:
To rozwiązało problem, więc edytowałem .zshrc i dodałem go do pliku, problem rozwiązany.
źródło
.zshrc
użyć tej samej odpowiedzi, co najlepsza odpowiedź ?