X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-3.4 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org To: cygwin AT cygwin DOT com From: Achim Gratz Subject: Re: /etc/profile Date: Sat, 25 Aug 2012 09:25:29 +0200 Lines: 173 Message-ID: <87ipc71lhy.fsf@Rainer.invalid> References: <20120822191002 DOT GA5467 AT pris DOT crapsteak DOT org> <87r4qyloup DOT fsf AT Rainer DOT invalid> <20120822194228 DOT GB5467 AT pris DOT crapsteak DOT org> <87mx1j1na7 DOT fsf AT Rainer DOT invalid> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com --=-=-= Content-Type: text/plain Achim Gratz writes: [...] Hit send too soon... here's the patch set again without the typos. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Protect-ORIGINAL_PATH-and-control-behaviour-by-CYGWI.patch From 8a930eb8adc4d9364ea0d6c8f63be448c539b448 Mon Sep 17 00:00:00 2001 From: Achim Gratz Date: Sat, 25 Aug 2012 08:19:12 +0200 Subject: [PATCH 1/3] Protect ORIGINAL_PATH and control behaviour by CYGWIN_NOWINPATH * etc/defaults/etc/profile: Protect an existing ORIGINAL_PATH variable. Strip windows PATH only from Cygwin path if variable CYGWIN_NOWINPATH is set. --- etc/defaults/etc/profile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) mode change 100644 => 100755 etc/defaults/etc/profile diff --git a/etc/defaults/etc/profile b/etc/defaults/etc/profile old mode 100644 new mode 100755 index b5a803d..5458446 --- a/etc/defaults/etc/profile +++ b/etc/defaults/etc/profile @@ -29,8 +29,14 @@ # software to override 'system' software. # Modifying these default path settings can be done in different ways. # To learn more about startup files, refer to your shell's man page. -ORIGINAL_PATH="${PATH}" -PATH="/usr/local/bin:/usr/bin" +if [ "${ORIGINAL_PATH-null}" = "null" ]; then + ORIGINAL_PATH="${PATH}" +fi +if [ "${CYGWIN_NOWINPATH-null}" = "null" ];then + PATH="/usr/local/bin:/usr/bin:${PATH}" +else + PATH="/usr/local/bin:/usr/bin" +fi MANPATH="/usr/local/man:/usr/share/man:/usr/man:${MANPATH}" INFOPATH="/usr/local/info:/usr/share/info:/usr/info:${INFOPATH}" -- 1.7.11.5 --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0002-Do-not-set-LC_ALL-unconditionally.patch From c3a3b56e8402f373507585bbeee5509e0df22412 Mon Sep 17 00:00:00 2001 From: Achim Gratz Date: Sat, 25 Aug 2012 08:21:08 +0200 Subject: [PATCH 2/3] Do not set LC_ALL unconditionally * etc/defaults/etc/profile: Avoid setting LC_ALL if it wasn't set to begin with. --- etc/defaults/etc/profile | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/etc/defaults/etc/profile b/etc/defaults/etc/profile index 5458446..c3d9c47 100755 --- a/etc/defaults/etc/profile +++ b/etc/defaults/etc/profile @@ -107,12 +107,19 @@ fi # Shell dependent settings profile_d () { - _LC_SAVE_="{LC_ALL}" + _LC_SAVE_="${LC_ALL-null}" LC_ALL=C - for file in /etc/profile.d/*.$1); do - [ -e "${file}" ] && LC_ALL="${_LC_SAVE_}" . "${file}" - done - LC_ALL="{_LC_SAVE_}" + if [ "${_LC_SAVE_}" = "null" ]; then + for file in /etc/profile.d/*.$1; do + [ -e "${file}" ] && . "${file}" + done + unset LC_ALL + else + for file in /etc/profile.d/*.$1; do + [ -e "${file}" ] && LC_ALL="${_LC_SAVE_}" . "${file}" + done + LC_ALL="${_LC_SAVE_}" + fi unset file unset _LC_SAVE_ } -- 1.7.11.5 --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0003-Do-not-set-PS1-for-non-interactive-shells.patch From f03f4ab0b47312959dd9d57a520af3f4a4c50011 Mon Sep 17 00:00:00 2001 From: Achim Gratz Date: Sat, 25 Aug 2012 08:35:02 +0200 Subject: [PATCH 3/3] Do not set PS1 for non-interactive shells * etc/defaults/etc/profile: Do not set PS1 for non-interactive shells. Zsh is in sh compatibility mode when it sources /etc/profile, so don't use zsh extensions. Posh should also run profile_d. --- etc/defaults/etc/profile | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/etc/defaults/etc/profile b/etc/defaults/etc/profile index c3d9c47..1e63c32 100755 --- a/etc/defaults/etc/profile +++ b/etc/defaults/etc/profile @@ -124,25 +124,20 @@ profile_d () unset _LC_SAVE_ } +HOSTNAME="$(/usr/bin/hostname)" +profile_d sh if [ ! "x${BASH_VERSION}" = "x" ]; then - HOSTNAME="$(/usr/bin/hostname)" - profile_d sh [ -f "/etc/bash.bashrc" ] && . "/etc/bash.bashrc" elif [ ! "x${KSH_VERSION}" = "x" ]; then typeset -l HOSTNAME="$(/usr/bin/hostname)" - profile_d sh - PS1=$(print '\033]0;${PWD}\n\033[32m${USER}@${HOSTNAME} \033[33m${PWD/${HOME}/~}\033[0m\n$ ') + [ "${PS1-null}" = "null" ] || PS1=$(print '\033]0;${PWD}\n\033[32m${USER}@${HOSTNAME} \033[33m${PWD/${HOME}/~}\033[0m\n$ ') elif [ ! "x${ZSH_VERSION}" = "x" ]; then - HOSTNAME="$(/usr/bin/hostname)" + # zsh is in shell compatibility mode here, so we probably shouldn't do this profile_d zsh - PS1='(%n@%m)[%h] %~ %% ' elif [ ! "x${POSH_VERSION}" = "x" ]; then - HOSTNAME="$(/usr/bin/hostname)" - PS1="$ " + {}; #[ "${PS1-null}" = "null" ] || PS1="$ " else - HOSTNAME="$(/usr/bin/hostname)" - profile_d sh - PS1="$ " + {}; #[ "${PS1-null}" = "null" ] || PS1="$ " fi export PATH MANPATH INFOPATH USER TMP TEMP PRINTER HOSTNAME PS1 SHELL tmp temp -- 1.7.11.5 --=-=-= Content-Type: text/plain Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Samples for the Waldorf Blofeld: http://Synth.Stromeko.net/Downloads.html#BlofeldSamplesExtra --=-=-= Content-Type: text/plain; charset=us-ascii -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --=-=-=--