From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?B?5a6L5paH5q2m?= Subject: Re: use zsh as login shell Date: Fri, 05 Dec 2014 21:57:19 +0800 Message-ID: <874mtafbcw.fsf@gmail.com> References: <87k32gtz2p.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:41649) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XwtPT-0004ES-6M for guix-devel@gnu.org; Fri, 05 Dec 2014 08:59:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XwtPK-00031f-32 for guix-devel@gnu.org; Fri, 05 Dec 2014 08:59:03 -0500 Received: from mail-pd0-x22f.google.com ([2607:f8b0:400e:c02::22f]:42997) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XwtPJ-00031b-K4 for guix-devel@gnu.org; Fri, 05 Dec 2014 08:58:54 -0500 Received: by mail-pd0-f175.google.com with SMTP id y10so732184pdj.34 for ; Fri, 05 Dec 2014 05:58:52 -0800 (PST) Received: from akarin ([59.172.247.101]) by mx.google.com with ESMTPSA id pk1sm29179444pdb.78.2014.12.05.05.58.33 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Dec 2014 05:58:51 -0800 (PST) In-Reply-To: <87k32gtz2p.fsf@gmail.com> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org --=-=-= Content-Type: text/plain Here are my new patches: Yeh, just add ~/.zshrc to source /etc/profie is enough. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-system-Cleanup-bash-startup-files.patch >From 42ccd7a445c9676db6d2c7b2b0583db45be245aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= Date: Fri, 5 Dec 2014 20:01:07 +0800 Subject: [PATCH 1/2] system: Cleanup bash startup files. * gnu/system.scm (etc-directory) (bashrc): Rename to (profile). 'CPATH', 'LIBRARY_PATH': Remove. 'PS1', 'alias ls', 'alias ll': Move to ... * gnu/system/shadow.scm (default-skeletons): (.bashrc): ... here. Don't source /etc/profile. (.bash_profile): New skeleton. --- gnu/system.scm | 13 ++++--------- gnu/system/shadow.scm | 13 +++++++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index e1ed1a2..a851ff2 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -384,10 +384,9 @@ This is the GNU system. Welcome.\n") (nsswitch (text-file "nsswitch.conf" "hosts: files dns\n")) - ;; TODO: Generate bashrc from packages' search-paths. - (bashrc (text-file* "bashrc" " -export PS1='\\u@\\h \\w\\$ ' - + ;; Startup file for POSIX-compliant login shells, which set system-wide + ;; environment variables. + (profile (text-file* "profile" "\ export LC_ALL=\"" locale "\" export TZ=\"" timezone "\" export TZDIR=\"" tzdata "/share/zoneinfo\" @@ -397,11 +396,7 @@ export LINUX_MODULE_DIRECTORY=/run/booted-system/kernel/lib/modules export PATH=$HOME/.guix-profile/bin:/run/current-system/profile/bin export PATH=/run/setuid-programs:/run/current-system/profile/sbin:$PATH -export CPATH=$HOME/.guix-profile/include:" profile "/include -export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib export INFOPATH=$HOME/.guix-profile/share/info:/run/current-system/profile/share/info -alias ls='ls -p --color' -alias ll='ls -l' ")) (skel (skeleton-directory skeletons))) (file-union "etc" @@ -414,7 +409,7 @@ alias ll='ls -l' ("nsswitch.conf" ,#~#$nsswitch) ("skel" ,#~#$skel) ("shells" ,#~#$shells) - ("profile" ,#~#$bashrc) + ("profile" ,#~#$profile) ("hosts" ,#~#$hosts-file) ("localtime" ,#~(string-append #$tzdata "/share/zoneinfo/" #$timezone)) diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm index 6970021..4a2322b 100644 --- a/gnu/system/shadow.scm +++ b/gnu/system/shadow.scm @@ -115,9 +115,13 @@ (copy-file (car (find-files #$guile-wm "wm-init-sample.scm")) #$output))) - (mlet %store-monad ((bashrc (text-file "bashrc" "\ -# Allow non-login shells such as an xterm to get things right. -test -f /etc/profile && source /etc/profile\n")) + (mlet %store-monad ((profile (text-file "bash_profile" "\ +# Honor per-interactive-shell startup file +if [ -f ~/.bashrc ]; then . ~/.bashrc; fi\n")) + (bashrc (text-file "bashrc" "\ +PS1='\\u@\\h \\w\\$ ' +alias ls='ls -p --color' +alias ll='ls -l'\n")) (guile-wm (gexp->derivation "guile-wm" copy-guile-wm #:modules '((guix build utils)))) @@ -127,7 +131,8 @@ XTerm*metaSendsEscape: true\n")) (gdbinit (text-file "gdbinit" "\ # Tell GDB where to look for separate debugging files. set debug-file-directory ~/.guix-profile/lib/debug\n"))) - (return `((".bashrc" ,bashrc) + (return `((".bash_profile" ,profile) + (".bashrc" ,bashrc) (".Xdefaults" ,xdefaults) (".guile-wm" ,guile-wm) (".gdbinit" ,gdbinit))))) -- 2.1.2 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0002-system-Add-skeleton-.zshrc.patch >From 043e4d9b6743654e048d3495cb5bfa592d17e6c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= Date: Fri, 5 Dec 2014 21:17:49 +0800 Subject: [PATCH 2/2] system: Add skeleton '.zshrc'. * gnu/system/shadow.scm (default-skeletons): Add .zshrc. --- gnu/system/shadow.scm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm index 4a2322b..a0b9f56 100644 --- a/gnu/system/shadow.scm +++ b/gnu/system/shadow.scm @@ -122,6 +122,9 @@ if [ -f ~/.bashrc ]; then . ~/.bashrc; fi\n")) PS1='\\u@\\h \\w\\$ ' alias ls='ls -p --color' alias ll='ls -l'\n")) + (zshrc (text-file "zshrc" "\ +# Honor system-wide environment variables +source /etc/profile\n")) (guile-wm (gexp->derivation "guile-wm" copy-guile-wm #:modules '((guix build utils)))) @@ -133,6 +136,7 @@ XTerm*metaSendsEscape: true\n")) set debug-file-directory ~/.guix-profile/lib/debug\n"))) (return `((".bash_profile" ,profile) (".bashrc" ,bashrc) + (".zshrc" ,zshrc) (".Xdefaults" ,xdefaults) (".guile-wm" ,guile-wm) (".gdbinit" ,gdbinit))))) -- 2.1.2 --=-=-= Content-Type: text/plain I find `su` to bash will give a non-useable shell with PATH set to '/sbin:/bin:/usr/sbin:/usr/bin'. This is because su/pam reset the PATH to this default value. To solve this, we can add /etc/environment and use pam_env.so for su. (imo not worth it :) `su -l` and `sudo` work fine. --=-=-=--