mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-25 12:23:09 +00:00
Invoke path_helper on macOS on all sessions, not just login
fish reads paths out of /etc/paths.d. Prior toadbaddf
it did this on every shell invocation; withadbaddf
it does so on only login shells. This change wasn't justified so let's revert this behavior.
This commit is contained in:
parent
535617623b
commit
c0f832a743
1 changed files with 35 additions and 33 deletions
|
@ -200,45 +200,47 @@ if not set -q __fish_init_2_3_0
|
||||||
set -U __fish_init_2_3_0
|
set -U __fish_init_2_3_0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
for entry in $$argv[1]
|
||||||
|
if not contains $entry $result
|
||||||
|
set result $result $entry
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set -xg $argv[1] $result
|
||||||
|
end
|
||||||
|
|
||||||
|
__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
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Some things should only be done for login terminals
|
# Some things should only be done for login terminals
|
||||||
# This used to be in etc/config.fish - keep it here to keep the semantics
|
# 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
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
for entry in $$argv[1]
|
|
||||||
if not contains $entry $result
|
|
||||||
set result $result $entry
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
set -xg $argv[1] $result
|
|
||||||
end
|
|
||||||
|
|
||||||
if status --is-login
|
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
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Put linux consoles in unicode mode.
|
# Put linux consoles in unicode mode.
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in a new issue