This is the mail archive of the cygwin-apps 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] |
On Fri, Dec 10, 2010 at 06:50:32AM +0000, Andy Koppe wrote: > On 10 December 2010 00:05, David Sastre wrote: > > Speaking of /etc/profile.d, it seems wrong to do that from > /etc/bash.bashrc. The name of the directory suggests that its content > is for login shells only. Absolutely. I'll try selective sourcing from /etc/profile e.g. bash sources *sh, and not *.zsh, and viceversa. > >> > A bash login shell only > >> > automatically sources the *profile files, not the *bashrc files. Users > >> > have every right to customise their ~/.bash_profile and ~/.bashrc to > >> > death, or to just delete them. Or perhaps they didn't have them in the > >> > first place because they nominated an existing directory as their home > >> > without copying the skel files. So there's no guarantee that ~/.bashrc > >> > and /etc/bash.bashrc are sourced by a bash login shell. This is important. The conclusion of this reasoning is that users' personal files (~/.bash{rc,_profile}) shouldn't be trusted at all in order to define a system-wide configuration. That's what happens both in my proposal and in the current base-files. (See below for a possible solution) > > That's true. Unless sourced from /etc/profile. Would that be > > acceptable? > > I think that would make sense, but it should only do so when the shell > is an interactive login shell. Here's how to find out: > > http://www.gnu.org/software/bash/manual/html_node/Is-this-Shell-Interactive_003f.html If you propose to check for *i* in $- instead of PS1 (as I'm doing now), yeah, it does look more reliable. > Zsh sources *profile files in login shells and the *zshrc files in > interactive shells, so an interactive login shell sources both. Not in bash. This is an example of a login shell. I have commented out the code that sources /etc/bash.bashrc and ~/.bashrc from ~/.bash_profile: $ grep MY_TEST /etc/profile /etc/bash.bashrc .bashrc .bash_profile /etc/profile:MY_TEST=${MY_TEST}:/etc/profile /etc/bash.bashrc:MY_TEST=${MY_TEST}:/etc/bash.bashrc .bashrc:MY_TEST=${MY_TEST}:~/.bashrc .bash_profile:MY_TEST=${MY_TEST}:~/.bash_profile $ echo $MY_TEST :/etc/profile:/home/dawud/.bash_profile $ echo $- himBH (Erm...I just realized know that was _exactly_ your point, was it?) > Hence > stuff that needs to be done once at login (e.g. setting up paths) goes > into *profile, and stuff to make an interactive shell comfortable > (e.g. prompt and aliases) goes into *zshrc. I think that makes plenty > of sense. It does, indeed. > Bash isn't going to change in this respect though, so emulating it by > /etc/profile sourcing /etc/bash.bashrc and ~/.bash_profile sourcing > ~/.bashrc is the next best thing. I learnt that enabling /etc/bash.bashrc to be sourced as a system-wide *rc file can be defined in a header file in the bash sources, and also /etc/bash.bash_logout, BTW. I'm sending a request to enable both of them to the bash mantainer; if he agrees to include them, it would be easier for me to define a system-wide configuration layer that doesn't interfere with (neither depend on) users' custom files, and also, presumably, allows smoother updates from there on. > > ?- There must be a switch for bash/mksh/* > > Wasn't there a patch for doing that switch without forks? Not that I know of... I'll try to write it down, though. -- Huella de clave primaria: 0FDA C36F F110 54F4 D42B D0EB 617D 396C 448B 31EB
Attachment:
signature.asc
Description: Digital signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |