Nie znaleziono komendy bash setenv

10

Kiedy używam następującego polecenia

         setenv CLASSPATH /path/mysql-connector-java-ver-bin.jar:$CLASSPATH

błąd jest

        bash setenv command is not found

Kiedy znajduję ścieżkę setenv, według której komendy, to 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)
Rui F. Ribeiro
źródło

Odpowiedzi:

15

setenvnależy do (t)csh, do bashktórej nie należy domyślna powłoka w CentOS. Posługiwać się

export CLASSPATH="/path/mysql-connector-java-ver-bin.jar:$CLASSPATH"

zamiast.

Janne Pikkarainen
źródło
3

Jeszcze lepiej, ponieważ bardziej czyste, użyj notacji przedrostkowej (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 javaproces, który wywołasz, będzie w stanie zebrać tymczasowe zmienne środowiskowe CLASSPATH, ANOTHER_VARi ATHIRD_VAR.

Jeśli użyłeś export, to zmienne będą również ustawione globalnie (?), Przynajmniej w środowisku skryptu. A wartości zmiennych, które już istniały, zostałyby zastąpione nowymi wartościami.

Zalety notacji przedrostkowej:

  • poprzednie wartości zmiennej powinny pozostać niezmienione, tzn. w przypadku, gdy stare wartości będą potrzebne później, nie będzie potrzeby zapisywania starych wartości zmiennych, które już istniały, w celu przywrócenia ich po wywołaniu
  • nie ma potrzeby unsetzmiennych tymczasowych do celów czyszczenia po wywołaniu
użytkownik160163
źródło