mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-02 22:11:11 -03:00
Only invoke path_helper in login shells
Matches upstream path_helper which is invoked in /etc/profile and only applies to login shells. Enables running interactive, non-login shells with altered PATH values. Reverts change inc0f832a7, which reverts change inadbaddf.
This commit is contained in:
committed by
ridiculousfish
parent
6e9250425a
commit
56309f1c2e
@@ -17,6 +17,7 @@
|
||||
- New color options for the pager have been added (#5524).
|
||||
- The default escape delay (to differentiate between the escape key and an alt-combination) has been reduced to 30ms, down from 300ms for the default mode and 100ms for vi-mode (#3904).
|
||||
- In the interest of consistency, `builtin -q` and `command -q` can now be used to query if a builtin or command exists (#5631).
|
||||
- The `path_helper` on macOS now only runs in login shells, matching the bash implementation.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -161,47 +161,44 @@ if not set -q __fish_init_2_3_0
|
||||
set -U __fish_init_2_3_0
|
||||
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 [ -f $path_file ]
|
||||
while read -l entry
|
||||
if not contains $entry $result
|
||||
set -a 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
|
||||
# This used to be in etc/config.fish - keep it here to keep the semantics
|
||||
#
|
||||
|
||||
if status --is-login
|
||||
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 [ -f $path_file ]
|
||||
while read -l entry
|
||||
if not contains $entry $result
|
||||
set -a 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
|
||||
|
||||
#
|
||||
# Put linux consoles in unicode mode.
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user