X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshenv;h=9b7092109a7fcf38a0e2adaf882da4dbcb9e1baf;hb=764227657c87ea0c1b85bedfbece407c3a02535d;hp=365b0dba9de0f795cdee698612ee7cfbd0359131;hpb=bf5493f17cbb327221eb800a43f1abfc93540322;p=grml-etc-core.git diff --git a/etc/zsh/zshenv b/etc/zsh/zshenv index 365b0db..9b70921 100644 --- a/etc/zsh/zshenv +++ b/etc/zsh/zshenv @@ -3,76 +3,133 @@ # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Sam Feb 24 17:32:18 CET 2007 [mika] ################################################################################ # This file is sourced on all invocations of the shell. -# If the -f flag is present or if the NO_RCS option is -# set within this file, all other initialization files -# are skipped. +# It is the 1st file zsh reads; it's read for every shell, +# even if started with -f (setopt NO_RCS), all other +# initialization files are skipped. # # This file should contain commands to set the command # search path, plus other important environment variables. # This file should not contain commands that produce # output or assume the shell is attached to a tty. # +# Notice: .zshenv is the same, execpt that it's not read +# if zsh is started with -f +# # Global Order: zshenv, zprofile, zshrc, zlogin ################################################################################ # language settings (read in /etc/environment before /etc/default/locale as # the latter one is the default on Debian nowadays) - [ -r /etc/environment ] && source /etc/environment - [ -r /etc/default/locale ] && source /etc/default/locale - [ -n "$LANG" ] && export LANG || export LANG="en_US.iso885915" - [ -n "$LC_ALL" ] && export LC_ALL - [ -n "$LC_MESSAGES" ] && export LC_MESSAGES - - [ -r /etc/sysconfig/keyboard ] && source /etc/sysconfig/keyboard +# no xsource() here because it's only created in zshrc! (which is good) +[[ -r /etc/environment ]] && source /etc/environment # set environment variables (important for autologin on tty) - [ -z "$HOSTNAME" ] && export HOSTNAME=`hostname` - [ -z "$USER" ] && export USER=`id -un` - [[ $LOGNAME == LOGIN ]] && LOGNAME=$(id -un) +if [ -n "${HOSTNAME}" ] ; then + export HOSTNAME="${HOSTNAME}" +elif [[ -x $(which hostname) ]] ; then + export HOSTNAME="$(hostname)" +elif [[ -x $(which hostnamectl) ]] ; then + export HOSTNAME="$(hostnamectl --static)" +fi + +# make sure /usr/bin/id is available +if [[ -x /usr/bin/id ]] ; then + [[ -z "$USER" ]] && export USER=$(/usr/bin/id -un) + [[ $LOGNAME == LOGIN ]] && LOGNAME=$(/usr/bin/id -un) +fi # workaround for live-cd mode as $HOME is not set via rungetty - if [ -f /etc/grml_cd ] ; then +if [[ -f /etc/grml_cd ]] ; then if (( EUID == 0 )); then - export HOME=/root + export HOME=/root else - export HOME=/home/$USER + export HOME=/home/$USER fi - fi +fi -# set $PATH +## set $PATH # gentoo users have to source /etc/profile.env - if [ -r /etc/gentoo-release ] ; then - [ -r /etc/profile.env ] && source /etc/profile.env - if (( EUID != 0 )); then - PATH="$HOME/bin:/bin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/games:/usr/NX/bin:$PATH" - else - PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin:/usr/NX/bin:$PATH" - fi - else - # support extra software in special directory outside of squashfs environment in live-cd mode - if [ -f /etc/grml_cd ] ; then - [ -d /cdrom/addons/ ] && ADDONS=':/cdrom/addons/' - fi - if (( EUID != 0 )); then - PATH="$HOME/bin:/bin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/games:/usr/NX/bin$ADDONS" - else - PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin:/usr/NX/bin$ADDONS" - fi -# fi - fi +if [[ -r /etc/gentoo-release ]] ; then + [[ -r /etc/profile.env ]] && source /etc/profile.env +fi + +# support extra scripts/software in special directory outside of squashfs environment in live mode +if [[ -f /etc/grml_cd ]] ; then + [[ -r /run/live/medium/scripts ]] && ADDONS='/run/live/medium/scripts' + [[ -r /etc/grml/my_path ]] && ADDONS="$(cat /etc/grml/my_path)" +fi + +# Solaris +case $(uname 2>/dev/null) in + SunOS) + path=( + /usr/bin + /usr/sbin + /usr/ccs/bin + /opt/SUNWspro/bin + /usr/ucb + /usr/sfw/bin + /usr/gnu/bin + /usr/openwin/bin + /opt/csw/bin + /sbin + ~/bin + ) +esac + +# generic $PATH handling +if (( EUID != 0 )); then + path=( + $HOME/bin + /usr/local/bin + /usr/bin + /bin + /usr/local/sbin + /usr/sbin + /sbin + /usr/local/games + /usr/games + "${ADDONS}" + "${path[@]}" + ) +else + path=( + $HOME/bin + /usr/local/sbin + /usr/local/bin + /sbin + /bin + /usr/sbin + /usr/bin + "${ADDONS}" + "${path[@]}" + ) +fi + +# remove empty components to avoid '::' ending up + resulting in './' being in $PATH +path=( "${path[@]:#}" ) + +typeset -U path # less (:=pager) options: # export LESS=C - export LESSOPEN="|lesspipe.sh %s" - export READNULLCMD=${PAGER:-/usr/bin/pager} +typeset -a lp; lp=( ${^path}/lesspipe(N) ) +if (( $#lp > 0 )) && [[ -x $lp[1] ]] ; then + export LESSOPEN="|lesspipe %s" +elif [[ -x /usr/bin/lesspipe.sh ]] ; then + export LESSOPEN="|lesspipe.sh %s" +fi +unset lp + +export READNULLCMD=${PAGER:-/usr/bin/pager} # allow zeroconf for distcc - export DISTCC_HOSTS="+zeroconf" +export DISTCC_HOSTS="+zeroconf" # MAKEDEV should be usable on udev as well by default: - export WRITE_ON_UDEV=yes +export WRITE_ON_UDEV=yes ## END OF FILE ################################################################# +# vim:filetype=zsh foldmethod=marker autoindent expandtab shiftwidth=4