This is the mail archive of the cygwin mailing list for the Cygwin project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
So SHELL env var does not exported by bash... Why?
This is a bug in bash which hides broken behavior in the OS.
Bash expects this to be an existing environment variable, and it usually is in normal Unix like operating systems.
However, bash internally sets the variable if it is missing (without exporting it):
From "info bash".
`SHELL' The full pathname to the shell is kept in this environment variable. If it is not set when the shell starts, Bash assigns to it the full pathname of the current user's login shell.
It is correct not to export the variable. Bash might not be the user's shell, so it has no right to introduce itself as the SHELL to child processes.
But, in fact, the shell does not own that variable at all and so it should not be setting it up even as an internal variable. The variable should stay unset to indicate that "there does not exist a configuration for the user's shell in this system". [...] Where does it come from on Linux? On the distro I have here, it is not exported by anything in /etc or my /home directory.
Of course not. It comes from the "login" process which authenticates you and fetches your shell from the password file.
Linux man page for "login":
The value for $HOME, $SHELL, $PATH, $LOGNAME, and $MAIL are set according to the appropriate fields in the password entry.
Cygwin sets HOME, and PATH, but not SHELL and LOGNAME.
Thanks for explanation. I set SHELL to /bin/bash under control panel.
SHELL=/bin/bash # Emacs parser of external program output # does not expect warnings from Cygwin... CYGWIN=nodosfilewarning # To allow start X program anywhere when X started, # for example by Win+R DISPLAY=:0 # Where live all profiles... HOME=e:\home # This allow access to info files from Cygwin and native Emacs... # Take special attention to final colon.
INFOPATH='c:/opt/cygwin/usr/share/info;e:/home/usr/share/info;e:/bin/gnuwin32/info;e:/bin/gnuwin32/share/info:' # This allow access to man files from Cygwin and native Emacs # (with cygwin-mount.el enabled)... # Take special attention to leading colon.
Also 2 year ago I write personal note about why set SHELL to /bin/bash: if do not do so rxvt use sh as shell and ~/.bashrc was not read and I lose my personal settings.
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |