Når jeg bruger følgende kommando
setenv CLASSPATH /path/mysql-connector-java-ver-bin.jar:$CLASSPATH
fejl er
bash setenv command is not found
Når jeg finder stien til setenv med hvilken kommando, så fandt jeg følgende sti
(/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 standardskallen i CentOS. Brug i stedet
export CLASSPATH="/path/mysql-connector-java-ver-bin.jar:$CLASSPATH"
.
Svar
Selv bedre fordi mere rent, brug præfiksnotation (uden set
) på den kommando, du vil påkalde:
CLASSPATH=/path/mysql-connector-java-ver-bin.jar:$CLASSPATH ANOTHER_VAR=bla ATHIRD_VAR=blu java -...
Nu vil den java
-proces, du påberåber dig, samle dine midlertidige miljøvariabler (er) CLASSPATH, ANOTHER_VAR
og ATHIRD_VAR
.
Hvis du brugte export
, så indstilles variablerne også globalt (?), i det mindste i scriptets miljø. Og værdier af variabler, som allerede eksisterede vil blive overskrevet af de nye værdier.
Fordele ved præfiksnotation:
- tidligere værdier af en variabel skal forblive uændrede, dvs. i tilfælde af at de gamle værdier bliver behov senere, så ville der ikke være behov for at gemme de gamle værdier af de variabler, der allerede eksisterede for at gendanne dem efter påkaldelsen
- intet behov for
unset
dine midlertidige variabler til oprydningsformål efter påkaldelsen