diff --git a/trunk/Xsession b/trunk/Xsession index 4a2a25e..ba75d40 100644 --- a/trunk/Xsession +++ b/trunk/Xsession @@ -5,12 +5,42 @@ echo "Running X session wrapper" # Load profile -for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do - if [ -f "$file" ]; then - echo "Loading profile from $file"; - . "$file" - fi -done +case $SHELL in + */bash) + [ -z "$BASH" ] && exec $SHELL --login $0 "$@" + shopt -q login_shell || exec $SHELL --login $0 "$@" + set +o posix + ;; + */zsh) + [ -z "$ZSH_NAME" ] && exec $SHELL --login $0 "$@" + [[ -o login ]] || exec $SHELL --login $0 "$@" + emulate -R sh + ;; + */csh|*/tcsh) + # [t]cshrc is always sourced automatically. + # Note that sourcing csh.login after .cshrc is non-standard. + xsess_tmp=`mktemp /tmp/xsess-env-XXXXXX` + $SHELL -c "if (-f /etc/csh.login) source /etc/csh.login; if (-f ~/.login) source ~/.login; /bin/sh -c 'export -p' >! $xsess_tmp" + . $xsess_tmp + rm -f $xsess_tmp + ;; + */fish) + [ -f /etc/profile ] && . /etc/profile + [ -f $HOME/.profile ] && . $HOME/.profile + xsess_tmp=`mktemp /tmp/xsess-env-XXXXXX` + $SHELL --login -c "/bin/sh -c 'export -p' > $xsess_tmp" + . $xsess_tmp + rm -f $xsess_tmp + ;; + *) # Plain sh, ksh, and anything we do not know. + [ -f /etc/profile ] && . /etc/profile + [ -f "$HOME/.profile" ] && . "$HOME/.profile" + ;; +esac + +[ -f /etc/xprofile ] && . /etc/xprofile +[ -f /usr/local/etc/xprofile ] && . /usr/local/etc/xprofile +[ -f $HOME/.xprofile ] && . $HOME/.xprofile # Load resources for file in "/etc/X11/Xresources" "$HOME/.Xresources"; do