在 /etc/profile 上显式设置的环境变量在 Arch 上丢失

在 /etc/profile 上显式设置的环境变量在 Arch 上丢失

这是/etc/profile我修改之前的。

$ cat /etc/profile
# /etc/profile

# Append "$1" to $PATH when not already in.
# This function API is accessible to scripts in /etc/profile.d
append_path () {
    case ":$PATH:" in
        *:"$1":*)
            ;;
        *)
            PATH="${PATH:+$PATH:}$1"
    esac
}

# Append our default paths
append_path '/usr/local/sbin'
append_path '/usr/local/bin'
append_path '/usr/bin'

# Force PATH to be environment
export PATH

# Load profiles from /etc/profile.d
if test -d /etc/profile.d/; then
    for profile in /etc/profile.d/*.sh; do
        test -r "$profile" && . "$profile"
    done
    unset profile
fi

# Unload our profile API functions
unset -f append_path

# Source global bash config, when interactive but not posix or sh mode
if test "$BASH" &&\
   test "$PS1" &&\
   test -z "$POSIXLY_CORRECT" &&\
   test "${0#-}" != sh &&\
   test -r /etc/bash.bashrc
then
    . /etc/bash.bashrc
fi

# Termcap is outdated, old, and crusty, kill it.
unset TERMCAP

# Man is much better than us at figuring this out
unset MANPATH

这些分别是PATHMANPATHINFOPATH

$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/home/a/.dotnet/tools:/var/lib/flatpak/exports/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
$ echo $MANPATH

$ echo $INFOPATH

安装 TeX Live 后,我进行了编辑/etc/profile,以便程序能够找到这些文件。

$ cat /etc/profile
# /etc/profile

# Append "$1" to $PATH when not already in.
# This function API is accessible to scripts in /etc/profile.d
append_path () {
    case ":$PATH:" in
        *:"$1":*)
            ;;
        *)
            PATH="${PATH:+$PATH:}$1"
    esac
}

# Append our default paths
append_path '/usr/local/sbin'
append_path '/usr/local/bin'
append_path '/usr/bin'
append_path '/usr/local/texlive/2023/bin/x86_64-linux'

# Force PATH to be environment
export PATH
export MANPATH=/usr/local/texlive/2023/texmf-dist/doc/man:$MANPATH
export INFOMATH=/usr/local/texlive/2023/texmf-dist/doc/info:$INFOPATH

# Load profiles from /etc/profile.d
if test -d /etc/profile.d/; then
    for profile in /etc/profile.d/*.sh; do
        test -r "$profile" && . "$profile"
    done
    unset profile
fi

# Unload our profile API functions
unset -f append_path

# Source global bash config, when interactive but not posix or sh mode
if test "$BASH" &&\
   test "$PS1" &&\
   test -z "$POSIXLY_CORRECT" &&\
   test "${0#-}" != sh &&\
   test -r /etc/bash.bashrc
then
    . /etc/bash.bashrc
fi

# Termcap is outdated, old, and crusty, kill it.
unset TERMCAP

# Man is much better than us at figuring this out
# unset MANPATH

我补充说append_path '/usr/local/texlive/2023/bin/x86_64-linux'export MANPATH=/usr/local/texlive/2023/texmf-dist/doc/man:$MANPATHexport INFOMATH=/usr/local/texlive/2023/texmf-dist/doc/info:$INFOPATH。我也注释掉了unset MANPATH。这里reboot是三个环境变量的样子。

$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/local/texlive/2023/bin/x86_64-linux:/home/a/.dotnet/tools:/var/lib/flatpak/exports/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
$ echo $MANPATH
/usr/local/texlive/2023/texmf-dist/doc/man:
$ echo $INFOPATH

PATHMANPATH更改为所需的值,但INFOPATH仍然为空。为什么会发生这种情况?

相关内容