message="fanculo" echo $message fanculo su - wls echo $message (nothing will be displayed, as "message" is not defined for wls)
This of course is a HPITA (aka RPITA) for someone who writes shell scripts.
You can use the "su -p" to pass the whole environment, but then there are some side effects:
su -p - wls su: ignore --preserve-environment, it's mutually exclusive to --login.(the "-" options is same as "--login")
su -p wls bash: /root/.bashrc: Permission denied
I found it cleaner and easier to simply run the command I have to run with the "-c" option, so that variable substitution takes place in the "right" (root) context:
softwareFolder=/software scriptFolder=/wlinstall .... su - wls -c "export JAVA_VENDOR=Sun;export JAVA_HOME=/usr/java/jdk1.7.0_55/;java -d64 -Xmx1024m -Djava.io.tmpdir=/opt/oracle/temp -jar ${softwareFolder}/wls1036_generic.jar -mode=silent -silent_xml=${scriptFolder}/weblogic_silent_install.xml"
this way softwareFolder and scriptFolder are both defined and I don't have to reinitialize them for the wls user...
No comments:
Post a Comment