[In the subject-line and presumably also in the quoted text, ‘.profile’
 is shorthand for ‘/etc/profile then ~/.profile then /etc/xprofile and
 then ~/.xprofile’.]

> Is there any good reason for gdm's Xsession to source ~/.profile?  It
> is very contrary to the principle of least surprise: nothing else
> other than a login shell sources ~/.profile.

gdm provides login, and effectively acts as a (graphical) login shell.
In particular, I believe it's the only way that one's preferred
environment variable settings take effect in X.

The primary bug here is aliasing ls to give non-standard behaviour in
non-interactive contexts.

Anything in startup scripts that makes standard commands behave contrary
to standard behaviour (i.e. contrary to the behaviour expected by scripts)
should be conditional on being in an interactive context, which
in Bourne-like shells is typically done like so:

  if [ -n "$PS1" ]; then
    alias ls='ls --color=auto'
    set -P
    ...
  fi

(Furthermore, one would generally want to put this in ~/.bashrc rather than
 ~/.profile, so that it's available even in non-login interactive shells
 such as launched by xterm or text editors or the like.  Then one would
 usually make sure that one's ~/.bash_profile contains

    if [ -f ~/.bashrc ]; then
          . ~/.bashrc
    fi

 (which /etc/skel/.bash_profile and a new user's default ~/.bash_profile
 already do).
 ~/.bashrc and ~/.bash_profile are specific to bash;
 to get the approach to work for any POSIX shell, have .profile export
 ENV="$HOME/my-shell-init" and use ~/my-shell-init instead of ~/.bashrc.
 Indeed, one could have ~/.bashrc source ~/my-shell-init, or even
 export ENV="$HOME/.bashrc" so long as it will never contain bashisms.)

> And [gdm's sourcing of .profile] seems to create a lot of
> hard-to-debug login problems.

What are examples of such problems that are likely to occur ?

Is it feasible for some task (possibly /etc/gdm/Xsession) to detect
the most common problems and warn about them ?

pjrm.


Reply via email to