Date: Wed, 07 Mar 2007 08:20:30 -0800 From: Garrett Cooper <youshi10@u.washington.edu> To: freebsd-questions@freebsd.org Subject: Re: Setting Env Message-ID: <45EEE64E.7040305@u.washington.edu> In-Reply-To: <821143.79253.qm@web62215.mail.re1.yahoo.com> References: <821143.79253.qm@web62215.mail.re1.yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Drew Jenkins wrote: >>> ----- Original Message ---- >>> From: Jerry McAllister <jerrymc@msu.edu> >>> To: Drew Jenkins <drewjenkinsjr@yahoo.com> >>> Cc: freebsd-questions@freebsd.org >>> Sent: Tuesday, March 6, 2007 7:46:26 PM >>> Subject: Re: Setting Env >>> >>>> If you want the environment variable to >>>> be set for something that is taking place in the script, then >>>> that variable must either be set in a durable way in the parent >>>> environment or be set right there in the script that is using it. >>>> The rc.conf method will make it available from the parent. >>>> That is the whole point of rc.conf. >>> Right. I figured that much. So, what do I actually put in that file? I >>> tried these two options: >>> >>> setenv LD_LIBRARY_PATH /usr/local/lib/mysql/ >>> >>> export LD_LIBRARY_PATH="/usr/local/lib/mysql/" >>> >> Well, setenv is a csh or tcsh command and isn't in sh and probably >> not in bash either (I haven't used bash). >> > > I am aware of that. I was trying to explain how I used every_possible_combination of things I could think of! > >> The export command is an sh and probably bash command and it >> doesn't exist in csh or tcsh. >> > > Yes, yes. I know. > >>> It didn't like either, presumably because it's not calling a bash or c-shell. >>> So, what should I put in /etc/rc.conf that will achieve my objective? >> Look at other variable setting in rc.conf. That should give you >> a good clue. For example, in my rc.conf I have several. One is: >> moused_enable="YES" >> That makes the moused_enable variable have a value of YES. >> So, if you want LD_LIBRARY_PATH to have the value of /usr/local/lib/mysql/ >> might that not be: >> LD_LIBRARY_PATH="/usr/local/lib/mysql/" >> > > I tried that and posted yesterday that that failed. > >> If you put it in the script that starts things - there needs to be one - >> then it depends on the script language, csh/tcsh sh/bash. >> csh/tcsh use setenv and set >> sh [and bash] use set and variable_name=value and needs an export to >> make it available to other entities besides the shell itself. >> You should look up the man pages on these things and take a look >> at some other scripts such as those in /usr/local/etc/rc.d for >> examples. > > What *things*? As far as scripts, this *should* be easy... > > #!/bin/csh > setenv LD_LIBRARY_PATH /usr/local/lib/mysql/ > > ...right? It doesn't work. Any other ideas? > Drew It probably gets overwritten somewhere later on down the line. Also, something to the effect like the following is better for portability reasons: #!/bin/sh if [ -n "$LD_LIBRARY_PATH" ] ; then export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib/mysql" else export LD_LIBRARY_PATH="/usr/local/lib/mysql" fi # run mysql junk here..
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45EEE64E.7040305>