Skip to content

Commit

Permalink
Invoke path_helper on macOS on all sessions, not just login
Browse files Browse the repository at this point in the history
fish reads paths out of /etc/paths.d. Prior to adbaddf it did
this on every shell invocation; with adbaddf it does so on only login
shells. This change wasn't justified so let's revert this behavior.
  • Loading branch information
ridiculousfish committed Mar 31, 2018
1 parent 5356176 commit c0f832a
Showing 1 changed file with 33 additions and 31 deletions.
64 changes: 33 additions & 31 deletions share/config.fish
Original file line number Diff line number Diff line change
Expand Up @@ -200,45 +200,47 @@ if not set -q __fish_init_2_3_0
set -U __fish_init_2_3_0
end

#
# Some things should only be done for login terminals
# This used to be in etc/config.fish - keep it here to keep the semantics
#

# Adapt construct_path from the macOS /usr/libexec/path_helper
# executable for fish; see
# https://opensource.apple.com/source/shell_cmds/shell_cmds-203/path_helper/path_helper.c.auto.html .
function __fish_macos_set_env -d "set an environment variable like path_helper does (macOS only)"
set -l result

for path_file in $argv[2] $argv[3]/*
if test -f $path_file
while read -la entry
if not contains $entry $result
set result $result $entry
end
end <$path_file
# macOS-ism: Emulate calling path_helper.
if command -sq /usr/libexec/path_helper
# Adapt construct_path from the macOS /usr/libexec/path_helper
# executable for fish; see
# https://opensource.apple.com/source/shell_cmds/shell_cmds-203/path_helper/path_helper.c.auto.html .
function __fish_macos_set_env -d "set an environment variable like path_helper does (macOS only)"
set -l result

for path_file in $argv[2] $argv[3]/*
if test -f $path_file
while read -la entry
if not contains $entry $result
set result $result $entry
end
end <$path_file
end
end
end

for entry in $$argv[1]
if not contains $entry $result
set result $result $entry
for entry in $$argv[1]
if not contains $entry $result
set result $result $entry
end
end

set -xg $argv[1] $result
end

set -xg $argv[1] $result
__fish_macos_set_env 'PATH' '/etc/paths' '/etc/paths.d'
if [ -n "$MANPATH" ]
__fish_macos_set_env 'MANPATH' '/etc/manpaths' '/etc/manpaths.d'
end
functions -e __fish_macos_set_env
end

if status --is-login
# macOS-ism: Emulate calling path_helper.
if command -sq /usr/libexec/path_helper
__fish_macos_set_env 'PATH' '/etc/paths' '/etc/paths.d'
if [ -n "$MANPATH" ]
__fish_macos_set_env 'MANPATH' '/etc/manpaths' '/etc/manpaths.d'
end
end

#
# Some things should only be done for login terminals
# This used to be in etc/config.fish - keep it here to keep the semantics
#

if status --is-login
#
# Put linux consoles in unicode mode.
#
Expand Down

0 comments on commit c0f832a

Please sign in to comment.