Når jeg bruker følgende kommando
setenv CLASSPATH /path/mysql-connector-java-ver-bin.jar:$CLASSPATH
feil er
bash setenv command is not found
Når jeg finner banen til setenv med hvilken kommando, så fant jeg følgende bane
(/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)
Svar
setenv
tilhører (t)csh
, ikke til bash
som er standardskallet i CentOS. Bruk i stedet
export CLASSPATH="/path/mysql-connector-java-ver-bin.jar:$CLASSPATH"
.
Svar
Even bedre fordi mer rent, bruk prefiksnotasjon (uten set
) på kommandoen du vil påberope:
CLASSPATH=/path/mysql-connector-java-ver-bin.jar:$CLASSPATH ANOTHER_VAR=bla ATHIRD_VAR=blu java -...
Nå vil java
prosessen du påberoper, samle den midlertidige miljøvariabelen (e) CLASSPATH, ANOTHER_VAR
og ATHIRD_VAR
.
Hvis du brukte export
, vil variablene også bli satt globalt (?), i det minste i skriptets miljø. Og verdier av variabler som allerede eksisterte vil bli overskrevet av de nye verdiene.
Fordeler med prefiksnotasjon:
- tidligere verdier av en variabel bør forbli uendret, dvs. i tilfelle de gamle verdiene blir nødvendig senere, ville det ikke være behov for å lagre de gamle verdiene til variablene som allerede eksisterte for å gjenopprette dem etter påkallelsen
- ikke behov for
unset
dine midlertidige variabler for oppryddingsformål etter påkallelsen