LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   how to set environmental variables (https://www.linuxquestions.org/questions/linux-newbie-8/how-to-set-environmental-variables-199433/)

chakkerz 06-30-2004 06:47 AM

how to set environmental variables
 
I swear i'm getting dumber.

How do you set these two environmental variables:

PATH and HTTP_PROXY

and also, what is the difference between them? as in I see path in my rc.d scripts, and i'm inclinde to set it there, and may be well (i'm thinking /etc/rc.d/rc.S (or M) but that definitely won't do for export HTTP_PROXY= ...

now when i run export on it's own i get all these vars spewed back at me, where are they kept?
I've googled, i've linux in a nutshelled, and i've tried to remember, but i can't (and i feel small and insecure as a result).

Any help, would really be appreachiated, i swear i used to know this.....

slackist 06-30-2004 06:54 AM

urm....

Sorry, newbie here, but is it /etc/profile

mark

chakkerz 06-30-2004 06:58 AM

well ... that was where i was straight headed, but nothing happens when i restart ... when i echo HTTP_PROXY ... nada

Dark_Helmet 06-30-2004 07:42 AM

Environment variables are stored in the memory space of the shell you're executing.

If I'm adding something new to my environment variables, I usually double-check everything. If it's global, I slap it in /etc/profile. If it's something for me, I put it in ~/.bash_profile. I manually source the file and "echo $HTTP_PROXY" (or whatever the variable is) to make sure it sticks. Then I switch to a virtual terminal, log in, and do the same echo there to make sure the changes are read correctly.

If you've got HTTP_PROXY defined in /etc/profile, and "echo $HTTP_PROXY" still gives you nothing, then check your ~/.bash_profile to make sure you aren't overwriting your own changes (unseting it for example).

chakkerz 06-30-2004 09:58 PM

aight ...
chakkerz@rurouni:~$ less ~/.bash_profile
/home/chakkerz/.bash_profile: No such file or directory

So no local over-ride

/etc/profile as follows (not #^^ for changes (those comments aren't in the file))

# /etc/profile: This file contains system-wide defaults used by
# all Bourne (and related) shells.

# Set the values for some environment variables:
export MINICOM="-c on"
export MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man
export HOSTNAME="`cat /etc/HOSTNAME`"
export LESSOPEN="|lesspipe.sh %s"
export LESS="-M"
export HTTP_PROXY=http://cunger:yeahRight@wwwproxy.scu.edu.au:3128/
#^^ added HTTP_PROXY

# If the user doesn't have a .inputrc, use the one in /etc.
if [ ! -r "$HOME/.inputrc" ]; then
export INPUTRC=/etc/inputrc
fi

# Set the default system $PATH:
PATH="/usr/lib/j2sdk1.5.0/bin/:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games"
#^^ added j2sdk1.5.0

# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in
# the $PATH. Some means of connection don't add these by default (sshd comes
# to mind).
if [ "`id -u`" = "0" ]; then
echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
if [ ! $? = 0 ]; then
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
fi
fi

# I had problems using 'eval tset' instead of 'TERM=', but you might want to
# try it anyway. I think with the right /etc/termcap it would work great.
# eval `tset -sQ "$TERM"`
if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then
TERM=linux
fi

# Set ksh93 visual editing mode:
if [ "$SHELL" = "/bin/ksh" ]; then
VISUAL=emacs
# VISUAL=gmacs
# VISUAL=vi
fi

# Set a default shell prompt:
#PS1='`hostname`:`pwd`# '
if [ "$SHELL" = "/bin/pdksh" ]; then
PS1='! $ '
elif [ "$SHELL" = "/bin/ksh" ]; then
PS1='! ${PWD/#$HOME/~}$ '
elif [ "$SHELL" = "/bin/zsh" ]; then
PS1='%n@%m:%~%# '
elif [ "$SHELL" = "/bin/ash" ]; then
PS1='$ '
else
PS1='\u@\h:\w\$ '
fi
PS2='> '
export PATH DISPLAY LESS TERM PS1 PS2

# Default umask. A umask of 022 prevents new files from being created group
# and world writable.
umask 022

# Set up the LS_COLORS and LS_OPTIONS environment variables for color ls:
if [ "$SHELL" = "/bin/zsh" ]; then
eval `dircolors -z`
elif [ "$SHELL" = "/bin/ash" ]; then
eval `dircolors -s`
else
eval `dircolors -b`
fi

# Notify user of incoming mail. This can be overridden in the user's
# local startup file (~/.bash.login or whatever, depending on the shell)
if [ -x /usr/bin/biff ]; then
biff y
fi

# Append any additional sh scripts found in /etc/profile.d/:
for file in /etc/profile.d/*.sh ; do
if [ -x $file ]; then
. $file
fi
done

# For non-root users, add the current directory to the search path:
if [ ! "`id -u`" = "0" ]; then
PATH="$PATH:."
fi

chakkerz 06-30-2004 10:03 PM

OH for crying out loud, why didn't this work two days ago??

Ah well, thanks for the help.

Dark_Helmet 06-30-2004 10:15 PM

Ok, I don't see anything wrong with the file. I tried exporting your exact statement and value in my system, and it worked as expected. So the only things I can think of are...

1. There's another file named ~/.bashrc. It's not looked at except for login shells. I doubt this would be the problem, but you might check it (like you did with ~/.bash_profile).

Quote:

Originally posted by chakkerz
# Append any additional sh scripts found in /etc/profile.d/:
for file in /etc/profile.d/*.sh ; do
if [ -x $file ]; then
. $file
fi
done

2. The section of the file above sources every file in the /etc/profile.d directory. You might want to check each one of them to see if they futz with the HTTP_PROXY variable.

3. Throw your hands up in the air in exasperation... Make sure the changes are saved to /etc/profile, and log out completely from X or pseudo terminals, and then log back in. That will force the system to re-read configuration files from scratch.

Dark_Helmet 06-30-2004 10:16 PM

Hehehe... I type too slowly :)

Glad it's working. Perhaps it was logging out and logging back in?

chakkerz 07-01-2004 03:06 AM

mayhaps ... honestly no idea ... well now i KNOW it SHOULD work that way, i hopefully will not be swayed next time i have this problem.

"It's not working ... no wait ... it's all in the mind"


All times are GMT -5. The time now is 06:14 PM.