bash setenv polecenie nie zostało znalezione

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

Dodaj komentarz

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