[clue] env variables

David L. Willson DLWillson at TheGeek.NU
Mon Jun 24 17:01:47 MDT 2013


You must modify the shell that will run the second script, because that is the shell that the second script will inherit its environment from.
It sounds like something like this will work:
$ first.sh
$ . env.sh
$ second.sh


Sent from my Verizon Wireless 4G LTE Smartphone

-------- Original message --------
From: "Mark G. Harvey" <markgharvey at yahoo.com> 
Date: 06/24/2013  5:28 PM  (GMT-05:00) 
To: CLUE's mailing list <clue at cluedenver.org> 
Subject: Re: [clue] env variables 
 


so removing #!/bin/bash/ at the top of the script to stay within the same shell session doesn't make any detectable difference

I also added sourcing the file where the variables are set ( # source /etc/profile.d/00_jdk.sh  )  

the variables PATH and JAVA_HOME show up correct when the script is running ... but when finished, the variables are still not changed

[root at 87148-mondev01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin  ... should be appended with /usr/java/jdk1.7.0_21/bin
[root at 87148-mondev01 ~]# echo $JAVA_HOME
... should have an entry /usr/java/jdk1.7.0_21/bin ... but it is blank 




From: "dennisjperkins at comcast.net" <dennisjperkins at comcast.net>
To: CLUE's mailing list <clue at cluedenver.org> 
Sent: Monday, June 24, 2013 2:56 PM
Subject: Re: [clue] env variables

The proper place for these might be in one of the Bash config files.

From: "Stephen Queen" <svqueen at gmail.com>
To: "Mark G. Harvey" <markgharvey at yahoo.com>, "CLUE's mailing list" <clue at cluedenver.org>
Sent: Monday, June 24, 2013 2:37:49 PM
Subject: Re: [clue] env variables

When you add 
#!/bin/bash
to the top of your script, you are starting a new shell. When the script completes, it exits that shell. Instead "source" you environmental variables. Create a file my_env that contains your export commands
# cat my_env
export JAVA_HOME=/usr/java/jdk1.7.0_21
export PATH=$PATH:/usr/java/jdk1.7.0_21/bin

Then source the file 
. my_env
(space between . and my_env, does not need to be executable).
Now when you
# echo $JAVA_HOME
usr/java/jdk1.7.0_21
# 

Steve

 


On Mon, Jun 24, 2013 at 1:54 PM, Mark G. Harvey <markgharvey at yahoo.com> wrote:
CLUE experts, 

This puzzle is likely simple for you folks, but it has me stumped.  I've done considerable digging but have found mixed advice. 

I've created a script to download from a local repo via wget an rpm to install JDK ... no problem there. 

Here's the part I can't get right ... setting the variables so I can run scripts to install Tomcat ... Any attempt will bomb if it can't find /usr/java/jdk1.7.0_21/bin  


# set JAVA_HOME variable   ... tried in vain
echo "setting JAVA_HOME variable variable for the session" 
JAVA_HOME=/usr/java/jdk1.7.0_21
# export JAVA_HOME variable  ... tried in vain
echo "exporting JAVA_HOME variable variable for the session" 
export JAVA_HOME=/usr/java/jdk1.7.0_21
echo "JAVA_HOME variable: $JAVA_HOME"

# set PATH variable for the session   ... tried in vain
echo "setting PATH variable for the session" 
PATH=$PATH:/usr/java/jdk1.7.0_21/bin
# export PATH variable for the session
echo "exporting PATH variable for the subsequent sessions & processes" 
export PATH=$PATH:/usr/java/jdk1.7.0_21/bin
echo "show PATH variable: $PATH"

sleep 3  # wait

# create script to set JAVA_HOME & PATH variables in /etc/profile.d/00_jdk.sh script for all accounts
# use echo command with single quotes to write the literal statement to the script
touch /etc/profile.d/00_jdk.sh
echo '#!/bin/bash' >> /etc/profile.d/00_jdk.sh
echo '# set JAVA_HOME in /etc/profile.d/00_jdk.sh script for all accounts' >> /etc/profile.d/00_jdk.sh
echo 'JAVA_HOME=/usr/java/jdk1.7.0_21' >> /etc/profile.d/00_jdk.sh
echo '# set PATH in /etc/profile.d/00_jdk.sh script for all accounts' >> /etc/profile.d/00_jdk.sh
echo 'PATH=$PATH:/usr/java/jdk1.7.0_21/bin' >> /etc/profile.d/00_jdk.sh  

sleep 3  # wait

echo "review contents of /etc/profile.d/00_jdk.sh"
cat /etc/profile.d/00_jdk.sh


... results of install ... added some blank lines for readability ...

[root at 87148-mondev01 ~]# ./DEV_install_jdk1.7-1.0.0.sh 
installation:  Oracle/Sun jdk 1.7 64-bit
remount /tmp with execute privledge
changed to /tmp
Pulling package from Artifactory Repo Management Server
--2013-06-24 13:24:38--  https://<RepoHost>/artifactory/simple/ext-release-local/oracle/jdk/7u21-linux/jdk-7u21-linux-x64.rpm
Resolving <RepoHost>... 10.33.44.10
Connecting to <RepoHost>|10.33.44.10|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 85388149 (81M) [application/x-rpm]
Saving to: “jdk-7u21-linux-x64.rpm”

100%[=======================================================================================================================================>] 85,388,149  52.7M/s   in 1.5s    

2013-06-24 13:24:40 (52.7 MB/s) - “jdk-7u21-linux-x64.rpm” saved [85388149/85388149]

jdk downloaded
check /tmp/ contents for jdk
-rw-r--r--. 1 root root 85388149 Jun  6 16:46 jdk-7u21-linux-x64.rpm
install jdk rpm
Preparing...                ########################################### [100%]
package jdk-2000:1.7.0_21-fcs.x86_64 is already installed      ........ due to subsequent running of this script
install jdk complete

setting JAVA_HOME variable variable for the session
exporting JAVA_HOME variable variable for the session

... when tested in the script, the correct answer shows up ... 

JAVA_HOME variable: /usr/java/jdk1.7.0_21   

setting PATH variable for the session
exporting PATH variable for the subsequent sessions & processes

... when tested in the script, the correct answer shows up ... 


show PATH variable: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/java/jdk1.7.0_21/bin:/usr/java/jdk1.7.0_21/bin

review contents of /etc/profile.d/00_jdk.sh
#!/bin/bash
# set JAVA_HOME in /etc/profile.d/00_jdk.sh script for all accounts
JAVA_HOME=/usr/java/jdk1.7.0_21
# set PATH in /etc/profile.d/00_jdk.sh  script for all accounts
PATH=$PATH:/usr/java/jdk1.7.0_21/bin
remount /tmp removing execute privledge
finished


... after script runs, when tested from CLI, variables not not correct ... 

[root at 87148-mondev01 ~]# echo $JAVA_HOME

[root at 87148-mondev01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin



[root at 87148-mondev01 ~]# exit
logout

[vwadmin at 87148-mondev01 ~]$ su -
Password: 


... now the variable additions show up ... they come from the /etc/profile.d/00_jdk.sh script created as part of the JDK download & install ... 

[root at 87148-mondev01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0_21/bin:/root/bin

[root at 87148-mondev01 ~]# echo $JAVA_HOME
/usr/java/jdk1.7.0_21



... How can I get the variables to be available for the current root session & usable for subsequent installations?  Trying to avoid the logout / login ... 



Thanks for your help.  

_______________________________________________
clue mailing list: clue at cluedenver.org
For information, account preferences, or to unsubscribe see:
http://cluedenver.org/mailman/listinfo/clue


_______________________________________________
clue mailing list: clue at cluedenver.org
For information, account preferences, or to unsubscribe see:
http://cluedenver.org/mailman/listinfo/clue

_______________________________________________
clue mailing list: clue at cluedenver.org
For information, account preferences, or to unsubscribe see:
http://cluedenver.org/mailman/listinfo/clue

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cluedenver.org/pipermail/clue/attachments/20130624/9f9aa121/attachment.html 


More information about the clue mailing list