summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-shells/fish/files/profile-env.fish')
-rw-r--r--app-shells/fish/files/profile-env.fish34
1 files changed, 21 insertions, 13 deletions
diff --git a/app-shells/fish/files/profile-env.fish b/app-shells/fish/files/profile-env.fish
index 21a918adba8f..d4852f04171b 100644
--- a/app-shells/fish/files/profile-env.fish
+++ b/app-shells/fish/files/profile-env.fish
@@ -1,15 +1,23 @@
-# since fish supports export via upstream provided function
-# we can source directly, only ommiting $PATH and comments.
-grep -Ev "^(#|export (PATH|ROOTPATH)=)" /etc/profile.env | source
+# only apply env for login shells, as we'd like fish to
+# inherit existing shell environment without overriding it
+# using csh env, as it's cleaner and less too parse/strip
-# strip unneded stuff from bash export lines
-# apply paths and cleanup
-if [ "$EUID" = "0" ] ; or [ "$USER" = "root" ]
- set _rootpath (grep -o " ROOTPATH='.*'" /etc/profile.env | sed "s@.*'\(.*\)'@\1@;s@:@\n@g")
- set -xg PATH /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin $_rootpath
- set -e _rootpath
-else
- set _userpath (grep -o " PATH='.*'" /etc/profile.env | sed "s@.*'\(.*\)'@\1@;s@:@\n@g")
- set -xg PATH /usr/local/bin /usr/bin /bin $_userpath
- set -e _userpath
+if status --is-login
+ # since fish supports export via upstream provided function
+ # we can source directly, only ommiting $PATH and comments.
+ string match -r -v '^(#|setenv (PATH|ROOTPATH) )' < /etc/csh.env | source
+
+ # strip unneded stuff from setenv lines
+ # apply paths and cleanup
+ if [ "$EUID" = "0" ] ; or [ "$USER" = "root" ]
+ string match -r '^setenv ROOTPATH .+' < /etc/csh.env | string replace -ra '\'|\:' ' ' | source
+ set -gx PATH /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin $ROOTPATH
+ set -e ROOTPATH
+ else
+ string match -r '^setenv PATH .+' < /etc/csh.env | string replace -ra '\'|\:' ' ' | source
+ set -gx PATH /usr/local/bin /usr/bin /bin $PATH
+ end
+
+ # re-prepend $fish_user_paths
+ __fish_reconstruct_path
end