Gdy używam następującego polecenia
setenv CLASSPATH /path/mysql-connector-java-ver-bin.jar:$CLASSPATH
błąd to
bash setenv command is not found
Kiedy znajdę ścieżkę setenv za pomocą której komendy, znalazłem następującą ścieżkę
(/usr/kerberos/sbin:/usr/kerberos/bin:/home/ec2/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/ec2/bin:/root/bin)
Odpowiedź
setenv
należy do (t)csh
, a nie bash
, który jest domyślną powłoką w CentOS. Zamiast tego użyj
export CLASSPATH="/path/mysql-connector-java-ver-bin.jar:$CLASSPATH"
.
Odpowiedź
Nawet lepsze, ponieważ bardziej przejrzyste, użyj notacji przedrostka (bez set
) w poleceniu, które chcesz wywołać:
CLASSPATH=/path/mysql-connector-java-ver-bin.jar:$CLASSPATH ANOTHER_VAR=bla ATHIRD_VAR=blu java -...
Teraz wywoływany proces java
będzie mógł zebrać tymczasowe zmienne środowiskowe CLASSPATH, ANOTHER_VAR
i ATHIRD_VAR
.
Jeśli użyłeś export
, wtedy zmienne również zostaną ustawione globalnie (?), przynajmniej w środowisku skryptu. Oraz wartości zmiennych, które już istniejące zostałyby nadpisane przez nowe wartości.
Zalety zapisu przedrostka:
- poprzednie wartości zmiennej powinny pozostać niezmienione, tj. w przypadku, gdy stare wartości są potrzebne później, nie będzie potrzeby zapisywania starych wartości zmiennych, które już istniały, w celu ich przywrócenia po wywołaniu.
- nie ma potrzeby
unset
twoje tymczasowe zmienne do celów porządkowych po wywołaniu