From f96c5cf4994959b669810ab9e3002edea543fdee Mon Sep 17 00:00:00 2001 From: Olav Vitters Date: Wed, 29 Jul 2020 12:44:10 +0200 Subject: Sync with Fedora (not a copy!) - provide a way how to override set envvars through /etc/profile.d/sh.local file - do show messages from /etc/profile.d/*in interactive shell, login shells - use hostnamectl instead of hostname --- profile | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 13 deletions(-) diff --git a/profile b/profile index 7a5a6d5..639c91b 100644 --- a/profile +++ b/profile @@ -1,15 +1,51 @@ -# /etc/profile -*- Mode: shell-script -*- -# (c) MandrakeSoft, Chmouel Boudjnah +# /etc/profile + +# System wide environment and startup programs, for login setup +# Functions and aliases go in /etc/bashrc loginsh=1 -if [ "$UID" -ge 1000 ] ; then - if ! echo ${PATH} |grep -q /usr/local/games ; then - PATH=$PATH:/usr/local/games - fi - if ! echo ${PATH} |grep -q /usr/games ; then - PATH=$PATH:/usr/games +# It's NOT a good idea to change this file unless you know what you +# are doing. It's much better to create a custom.sh shell script in +# /etc/profile.d/ to make custom changes to your environment, as this +# will prevent the need for merging in future updates. + +pathmunge () { + case ":${PATH}:" in + *:"$1":*) + ;; + *) + if [ "$2" = "after" ] ; then + PATH=$PATH:$1 + else + PATH=$1:$PATH + fi + esac +} + + +if [ -x /usr/bin/id ]; then + if [ -z "$EUID" ]; then + # ksh workaround + EUID=`/usr/bin/id -u` + UID=`/usr/bin/id -ru` fi + USER="`/usr/bin/id -un`" + LOGNAME=$USER + MAIL="/var/spool/mail/$USER" +fi + +# Path manipulation +if [ "$UID" -ge 1000 ] ; then + pathmunge /usr/local/games after + pathmunge /usr/games after +fi +if [ "$EUID" = "0" ]; then + pathmunge /usr/sbin + pathmunge /usr/local/sbin +else + pathmunge /usr/local/sbin after + pathmunge /usr/sbin after fi umask 022 @@ -18,7 +54,7 @@ USER=`id -un` LOGNAME=$USER MAIL="/var/spool/mail/$USER" HISTCONTROL=ignoredups -HOSTNAME=`/bin/hostname` +HOSTNAME=`/usr/bin/hostnamectl --transient 2>/dev/null` HISTSIZE=1000 if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then @@ -32,10 +68,15 @@ NLSPATH=/usr/share/locale/%l/%N export PATH PS1 USER LOGNAME MAIL HOSTNAME INPUTRC NLSPATH export HISTCONTROL HISTSIZE -for i in /etc/profile.d/*.sh ; do - if [ -r $i ]; then - . $i - fi +for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do + if [ -r "$i" ]; then + if [ "${-#*i}" != "$-" ]; then + . "$i" + else + . "$i" >/dev/null + fi + fi done unset i +unset -f pathmunge -- cgit v1.2.1