How are environment variables defined in a Gnome terminal session?

 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers How are environment variables defined in a Gnome terminal session?
# 1  
Old 12-21-2017
How are environment variables defined in a Gnome terminal session?

Hello... and thanks in advance for any help anyone can offer me with my question! I'm hoping someone will have a little patience with me and walk me through this!

I'm trying to understand a user login process on Centos 7 and I've gotten a bit confused trying to figure out when/how a Gnome terminal session defines environment variables (Gnome 3.14.4).

As near as I can tell.... a Gnome terminal will only define environment variables from the /etc/profile, ~/.profile, or ~/.bash_profile if the variables were exported in those scripts.

If they aren't exported then they don't appear in the output of either the set or printenv commands. The /etc/environment file is the exception (but it's not a shell login script).

The only thing I've found that looks like it would do this is the /etc/X11/xinit/xinitrc-common file when it sources the ~/.profile login script... But that's just a single login script and doesn't explain why exported variables in /etc/profile & ~!/.bash_profile are being displayed in set.


Code:
 [-r $HOME/.profile ] && . $HOME/.profile


If this reads the variables in the ~/.profile script... How are the variables being read for /etc/profile & ~/.bash_profile? If it matters.... I haven't selected "run command as login script"

Once again... thanks to anyone willing to read this and set me straight!
# 2  
Old 12-21-2017
Gnome terminal is not a shell and doesn't really set environment variables for you. Somewhere in your setup for Gnome terminal you told it that you wanted it to start a shell for you. It starts that shell as a login shell which causes it to read its own initialization scripts.

If one of the scripts your login shell is reading is ~/.bash_profile, the shell that has been configured for you is bash.

If you were using a BSD, Linux, or UNIX system the login shell for a user would be found in the user database (frequently contained in a file named /etc/passwd). I believe that Windows has a similar user database, but I don't remember where it is located nor how it is accessed.
# 3  
Old 12-21-2017
First... thanks for the reply! I hope I can ask for your patience as I try to understand this

I've done quite a bit of reading to try and understand this.... The documentation I had read said that the Bash login scripts (/etc/profile, ~/.bash_profile, ~/.profile, etc) wouldn't get sourced/executed in an interactive non-login shell mode (i.e. Gnome terminal)... and this specific shell mode would only read the /etc/bashrc and the ~/.bashrc scripts.

This had me slightly confused on how a Gnome terminal might go about getting environment variables that would be required to make programs work correctly in an interactive login shell mode (i.e. SSH, Telnet, etc). So I started playing with it.

Like I said, I discovered, if I defined variables simply as local variables (without the 'export' command) in the login scripts they would not be displayed in the output of set/printenv commands.... Which is how the documentation said it would behave

But by playing with things, I discovered if I exported the variable in the Bash login scripts, they were appearing in the output of the set/printenv commands. Initially I thought they were being exported as a global variable from an SSH (putty) sessions

So I did a reboot, and logged in directly to Gnome (Multiple times), to make sure I wasn't accidentally exporting a global variable by a SSH session.

To try and figure this out... I started poking around Gnome and found the /etc/X11/xinit/xinitrc-common file sources the $HOME/.profile script. But this hardly explains the exported variables from the other login scripts... So I'm left pretty baffled on why documentation is saying one thing... But what I'm see Centos & Gnome do is something totally different

Anyway... once again thank you for your reply... If you could help me understand this I would be extremely grateful!!!
# 4  
Old 12-21-2017
Hi Bodisha,

You have actually answered the question yourself, when you say "Gnome Terminal" - you can in fact drop the word Gnome. Its just a terminal and will read the appropriate file on start up.

It doesn't matter what desktop environment you use, when you start the terminal it will read the required initialisation files and will have the variables set as determined by the file contents.

Regards

Gull04
# 5  
Old 12-21-2017
In a macOS version 10.13.2 terminal window, if I type in the command:
Code:
who am i

it will reply with something like:
Code:
dwc      ttys006  Dec 17 12:52

If I then type in the command:
Code:
ps -t ttys006

it gives me something like:
Code:
  PID TTY           TIME CMD
  849 ttys006    0:00.02 login -pf dwc /bin/ksh
  850 ttys006    0:01.72 -ksh
81761 ttys006    0:00.00 ps -t ttys006

I would expect that running similar commands in your Gnome terminal window will produce similar results, but the first field in the output from who am i will be your login ID instead of mine and the 2nd field will be your terminal device ID instead of ttys006. If you then issue that ps command with your terminal device ID as the -t option option-argument, I would expect to see similar output on your screen with the -ksh in my output replaced by a -bash in your output. The login command shown in my output is what macOS uses to start a login session. There might or might not be a similar line in your ps output depending on how Centos starts a login session.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Doing math using user defined input and system environment variables

Hi, I need some help to setup some environmental variables. for example...Get A -> userdefined/user input B -> a number. c -> system variable...for example $GETCONF PAGE_SIZE E = do some math using bc display a message "The value is E" setup the system/kernel paramter sysctl -p... (3 Replies)
Discussion started by: saravanapandi
3 Replies

2. Shell Programming and Scripting

Issue with gnome terminal

Hi, I cant get this command to run in a new gnome terminal cd "$PRG" && gnome-terminal -x sh -c './prg -r testcommand' &>/dev/null & i can run just ./prg -r testcommand and it runs fine but in the command above it only runs ./prg Any ideas community Cheers in advance (0 Replies)
Discussion started by: digitalviking
0 Replies

3. UNIX for Dummies Questions & Answers

gnome-terminal questions

I have a couple questions regarding gnome-terminal. Basically I am trying to write an alias that will bring up several gnome-terminals that navigate to certain directories and run certain commands. I have it pretty well figured out, but the one I am having a problem with is simply running a... (2 Replies)
Discussion started by: Tennesseej
2 Replies

4. UNIX for Dummies Questions & Answers

Finding WHERE an environment variable is defined.

HI. I had an environment variable defined in my .bash_profile file and I deleted it. I opened a new terminal and looked inside .bash_profile and it's not there but when I type printenv MYCONFIG it reutrns what the value used to be in my .bash_profile still!! I did a grep for MYCONFIG and... (6 Replies)
Discussion started by: dissectcode
6 Replies

5. Debian

Gnome session reverts back to gdm on login.

Hi everyone. I just had a quick problem. I'm not too familiar with linux yet, otherwise I'd have this figured out by now. I recently did the Debian 5lenny7 update with the standard debian update manager. After getting all installed and rebooted, I tried to login to my account again. Every... (3 Replies)
Discussion started by: runfaj
3 Replies

6. Solaris

I am not able to login in gnome session and java session in Sun solaris 9& 10

I am not able to login in gnome session and java session in Sun solaris 9& 10 respectively through xmanager as a nis user, I am able to login in common desktop , but gnome session its not allowing , when I have given login credentials, its coming back to login screen, what shoul I do to allow nis... (0 Replies)
Discussion started by: durgaprasadr13
0 Replies

7. Shell Programming and Scripting

Problem with gnome-terminal

Hello everyone. This is my first post.:o Using Ubuntu 8.04 and bash 3.2.39 i'm trying to adapt my routine to this platform. So, this means forget xterm and use gnome-terminal (as default ubuntu terminal). EveryDay i need to connect to several servers, and i've made a Tcl'script to make this... (1 Reply)
Discussion started by: trutoman
1 Replies

8. Linux

Launch application in gnome session of another user.

A gnome session is launched by UserA of System A, I am connected to userB of System B(or A) through PUTTY. I want to launch an application for eg: gedit through Putty in the display of system A. how can I achieve this. for eg:- root is logged in to System A, with gdm. DISPLAY=0.0, ip =... (4 Replies)
Discussion started by: Sivaswami
4 Replies

9. Shell Programming and Scripting

sqlplus session being able to see unix variables session within a script

Hi there. How do I make the DB connection see the parameter variables passed to the unix script ? The code snippet below isn't working properly. sqlplus << EOF user1@db1/pass1 BEGIN PACKAGE1.perform_updates($1,$2,$3); END; EOF Thanks in advance, Abrahao. (2 Replies)
Discussion started by: 435 Gavea
2 Replies

10. Linux

environment variable is not defined

moved to correct thread (0 Replies)
Discussion started by: alien12
0 Replies
Login or Register to Ask a Question