Environment variables


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Environment variables
# 1  
Old 04-26-2012
Environment variables

I have read tons of posts about how you can't set persisting environment variable in a child script of a shell and have it persist. The only way is to source a file as

% . <scriptname>

I am finding that true... but I know there is a way around it. I just don't know how. I worked for 6 years at a company where you would set a bunch of environment variables that defined your work space with various tools. They were all very simple to use ex.:

% toolname argument
% echo $envVarFoo
% Bar

These variable drove everything about what directory you were in, how other tools behaved, and where your files were written to and read from. And there was nothing hacky/tricky for the user.

Shame on me for not better examining the tools, though they were extremely complicated. I do know they are made up of some Perl and Python mostly. I am writing a sweet of tools now to do various things. One thing I need to be able to do is set environment variables that don't die with the script. Can someone please point me in the right direction?! I know we didn't litter our system with hidden dot files either.

Begging for Help!
# 2  
Old 04-26-2012
IF you source a script the environment variables persist. A sourced script should not call exit or you will be logged out.

Two ways to source a script named env.sh
Code:
. env.sh
source env.sh

Those tools probably had you running inside a child process, with the parent process killed off. So when you exit the now-current child process, you log out.

Another more sensible approach: In C/perl you can all exec to run a command like "bash -c env.sh" to set variables. Which is probably what the perl code did. This does not create a child it replaces the old process. This is also what sourcing does.

Last edited by jim mcnamara; 04-26-2012 at 08:45 PM..
This User Gave Thanks to jim mcnamara For This Post:
# 3  
Old 04-27-2012
I faced similar issue while i was developing tools for navigating to different directories, I wrote script to change user CWD to desired one (from the inputs provided) but as script used to run in sub-shell it used to bring user back to original directory!!

To avoid that i created functions, here is sample code .. (writing directly here..)
Code:
$ cat chageDir.sh 
newDir=$1
cd $newDir

$ function changeDir {
. Path/to/script/changeDir.sh $@
}

changeDir /tmp

by creating function, you can avoid writing ". /" or "source", good from user point of view... also function allows sending arguments. If there are no arguments just use alias!
# 4  
Old 04-27-2012
So jim, when you use "bash -c env.sh" to spawn a new shell, is there a way to make that invisible to user? currently it changes the user name or computer name on the left to "bash:" Can that be avoided?

And to zedex, what you cat "changeDir.sh" where does that file get stored? is it in the current directory or into memory? I don't want to litter .sh files everywhere Smilie

Thanks for both of your replies.
# 5  
Old 04-27-2012
There's nothing mysterious about it -- it's just the value of the PS1 variable being changed or, perhaps, being left blank. Try 'export PS1' before running it so things you run can inherit it. Or you can always change it to whatever you want later.
# 6  
Old 04-28-2012
Quote:
Originally Posted by rwa25
And to zedex, what you cat "changeDir.sh" where does that file get stored? is it in the current directory or into memory? I don't want to litter .sh files everywhere Smilie
Thats just an example, before loading you would set PATH variable or use function with complete path/to/scrtipt so that you dont have to set PATH
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. HP-UX

Environment Variables

Hi All, I need to understand following three environment variables and their usages in HP Unix. _M_ARENA_OPTS _M_CACHE_OPTS PTHREAD_SCOPE_SYSTEM How does these environment variables influence multi threaded applciation and how do we decide the value of these variables? Is there... (0 Replies)
Discussion started by: angshuman
0 Replies

2. Homework & Coursework Questions

Environment Variables

1. The problem statement: What is the mesg value set for your environment? If it is on, how would you turn off your current session? How would you set it permanently? 3. The attempts at a solution : Read Unix The textbook. 3rd chapter has many things like environment variables and... (5 Replies)
Discussion started by: mahinkhan22
5 Replies

3. HP-UX

Environment Variables

Hi Experts, Need your help in understanding the commands to setup the environment variables in hp-ux. Beleive need to use either set,setenv or export. I am confused between above three options, when to use which option? On command line, I have tried both set and setenv but couldn't... (1 Reply)
Discussion started by: sai_2507
1 Replies

4. UNIX for Dummies Questions & Answers

Environment variables

why are all environment variables represented in a fixed format regardless of the shell you use? like $HOME $PATH etc (6 Replies)
Discussion started by: sravani
6 Replies

5. Shell Programming and Scripting

environment variables

Hi, If i have a variable set and exported in my pofile file will that variable be available in all shell scripts created. Thanks, Radhika. (3 Replies)
Discussion started by: radhika03
3 Replies

6. Programming

environment variables

hi, I want to create a new EV(Environment Variable) through a c program and I done this thing through setenv() method. But the newly created EV is not permanent, i.e. when I exit from the program the EV also no longer lives. But I want to make it a permanent EV for the current user. Actually I... (6 Replies)
Discussion started by: sumsin
6 Replies

7. UNIX for Dummies Questions & Answers

help..Environment variables...

hi, 1). i would like to know what is meant by environment variables? 2). is the number of envi variables is a constant number for unix systems? 3). how to see the list of envi variables (and the values of the envi variables)in a single command? 4). if this questions were already asked... (3 Replies)
Discussion started by: sekar sundaram
3 Replies

8. UNIX for Dummies Questions & Answers

environment variables

Hi Folks, Is it possible somehow to unset all the environment variables which have been defined before in UNIX (Solaris). Thanks, Slava (3 Replies)
Discussion started by: spavlov
3 Replies

9. Programming

environment variables

Hi! How-to get the environment variables in GNU. getenv() only fetches the ones that you can find under export (not the ones under declare)... best regars .David (2 Replies)
Discussion started by: Esaia
2 Replies

10. UNIX for Dummies Questions & Answers

what is the use of Environment variables

what is the actual use of environment variables. I know only PS1, LOGNAME, PS2 variables what are the other variables & what is there use (2 Replies)
Discussion started by: indianguru
2 Replies
Login or Register to Ask a Question