/etc/profile配置文件内容注释说明(shell脚本)

本文解析了Linux系统中/etc/profile文件的关键内容及其作用。介绍了如何通过修改此文件来定制用户的运行环境,包括环境变量的定义及路径设置等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该配置文件是红帽7版本的,对于不同的版本主要内容都是相同的。Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。常在/etc/profile文件中修改环境变量,在这里修改的内容是对所有用户起作用的。下面分析一下/etc/profile文件中各部分内容的含义和作用。

# /etc/profile


# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc


# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.


pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}

#判断当前系统的PATH中是否有该命令的目录,如果没有,则判断是要将该目录放于PATH之前还是之后。
#"$1"是要添加的内容,"${PATH}"是环境变量路径,检查是否已存在,如果存在,则不操作;如果不存在,判断需要添加到前面还是后面。





if [ -x /usr/bin/id ]; then        #判断/usr/bin/id是否存在且有可执行权限
    if [ -z "$EUID" ]; then        #判断变量$EUID是否为空字符串
        # ksh workaround
        EUID=`id -u`
        UID=`id -ru`
    fi

#检查变量EUID,如果为空且/usr/bin/id可执行,则初始化变量EUID和UID




    USER="`id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi



#通过/usr/bin/id命令,初始化变量USER LOGNAME MAIL




# Path manipulation
if [ "$EUID" = "0" ]; then  
         #判断,如果是root用户,则将/sbin /usr/sbin /usr/local/sbin添加到PATH变量中
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
fi


HOSTNAME=`/usr/bin/hostname 2>/dev/null`
       #初始化HOSTNAME并设置系统默认情况下不产生core文件
HISTSIZE=1000                                   #表示当输入history命令(即上翻键找历史命令)时,最多显示多少命令
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth    
          #在不想被记住的命令前面输入一个空格,该命令就不会出现在历史记录中
else
    export HISTCONTROL=ignoredups  
            #剔除历史记录的命令中连续的重复条目
fi


export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL


# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002    
      #普通用户umask
else
    umask 022
          #root用户umask
fi


for i in /etc/profile.d/*.sh ; do
        #执行/etc/profile.d/目录下所有脚本文件
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then 
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done


unset i  
      #删除此脚本中用到的变量
unset -f pathmunge       #删除此脚本中用到的函数
[root@localhost ~]# grep -E "PATH=|JAVA_HOME" /etc/environment /etc/profile /etc/profile.d/* /etc/bashrc /etc/profile: PATH=$PATH:$1 /etc/profile: PATH=$1:$PATH /etc/profile:export JAVA_HOME=/home/java/jdk-18.0.2.1+1 /etc/profile:export PATH=$JAVA_HOME/bin:$PATH /etc/profile.d/abrt-console-notification.sh:TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> "$ABRT_DEBUG_LOG"` /etc/bashrc: PATH=$PATH:$1 /etc/bashrc: PATH=$1:$PATH [root@localhost ~]# grep "PATH=.*PATH" /etc/profile /etc/profile.d/* /etc/profile: PATH=$PATH:$1 /etc/profile: PATH=$1:$PATH /etc/profile:export PATH=$JAVA_HOME/bin:$PATH /etc/profile.d/abrt-console-notification.sh:TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> "$ABRT_DEBUG_LOG"` [root@localhost ~]# grep -E "PATH=|JAVA_HOME" ~/.bashrc ~/.bash_profile ~/.profile ~/.bash_login /root/.bash_profile:PATH=$PATH:$HOME/bin grep: /root/.profile: 没有那个文件或目录 grep: /root/.bash_login: 没有那个文件或目录 [root@localhost ~]# sudo apt-get install bash-doc sudo: apt-get:找不到命令 [root@localhost ~]# grep -r "JAVA_HOME=" /etc/ ~/.[^.]* 2>/dev/null | sort -u /etc/java/java.conf:#JAVA_HOME=$JVM_ROOT/java /etc/java/java.conf:#JAVA_HOME=$JVM_ROOT/jre /etc/profile:export JAVA_HOME=/home/java/jdk-18.0.2.1+1 /etc/profile.save:export JAVA_HOME=/home/java /etc/profile.save:export JAVA_HOME=/home/java/jdk-17.0.16+8 /etc/rpm/macros.jpackage:%ant JAVA_HOME=%{java_home} ant /root/.bash_history:echo 'export JAVA_HOME=/home/java' >> /etc/profile /root/.bash_history:echo 'export JAVA_HOME=/home/java/jdk-17.0.16+8' >> /etc/profile /root/.bash_history:export JAVA_HOME=/home/java /root/.m2/apache-maven-3.9.11/bin/mvn: JAVA_HOME=`(cd "$JAVA_HOME"; pwd)` /root/.m2/apache-maven-3.9.11/bin/mvn: JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` /root/.m2/apache-maven-3.9.11/bin/mvn: JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 匹配到二进制文件 /etc/.profile.swp [root@localhost ~]# sudo tee /etc/profile.d/java.sh <<'EOF' > if [ -z "${JAVA_HOME}" ]; then > export JAVA_HOME=/opt/jdk-18 > case ":${PATH}:" in > *":${JAVA_HOME}/bin:"*) ;; > *) export PATH="${JAVA_HOME}/bin:${PATH}" ;; > esac > fi > EOF if [ -z "${JAVA_HOME}" ]; then export JAVA_HOME=/opt/jdk-18 case ":${PATH}:" in *":${JAVA_HOME}/bin:"*) ;; *) export PATH="${JAVA_HOME}/bin:${PATH}" ;; esac fi [root@localhost ~]# echo "JAVA_HOME: $JAVA_HOME" JAVA_HOME: /home/java/jdk-18.0.2.1+1 [root@localhost ~]# echo "Java路径: $(which java)" Java路径: /home/java/jdk-18.0.2.1+1/bin/java [root@localhost ~]# echo "${PATH//:/$'\n'}" | grep -i jdk /home/java/jdk-18.0.2.1+1/bin /home/java/jdk-17.0.16+8/bin /home/java/jdk-18.0.2.1+1 /home/java/jdk-18.0.2.1+1/bin [root@localhost ~]# ls -l /etc/profile.d/java.sh -rw-r--r-- 1 root root 174 7月 23 15:03 /etc/profile.d/java.sh [root@localhost ~]# chmod +x /etc/profile.d/java.sh [root@localhost ~]# source ~/.bashrc && source /etc/profile [root@localhost ~]# bash -x -l -c 'echo $PATH' + '[' -x /usr/bin/id ']' + '[' -z 0 ']' ++ /usr/bin/id -un + USER=root + LOGNAME=root + MAIL=/var/spool/mail/root + '[' 0 = 0 ']' + pathmunge /usr/sbin + case ":${PATH}:" in + pathmunge /usr/local/sbin + case ":${PATH}:" in ++ /usr/bin/hostname + HOSTNAME=localhost.localdomain + HISTSIZE=1000 + '[' ignoredups = ignorespace ']' + export HISTCONTROL=ignoredups + HISTCONTROL=ignoredups + export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL + '[' 0 -gt 199 ']' + umask 022 + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/256term.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/256term.sh ++ local256= ++ '[' -n '' ']' ++ '[' -n '' ']' ++ unset local256 + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/abrt-console-notification.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/abrt-console-notification.sh ++ tty -s ++ '[' -z '' ']' ++ return 0 + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/bash_completion.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/bash_completion.sh ++ '[' -z '4.2.46(2)-release' -o -z '' -o -n '' ']' ++ return + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/colorgrep.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/colorgrep.sh ++ /usr/libexec/grepconf.sh -c ++ alias 'grep=grep --color=auto' ++ alias 'egrep=egrep --color=auto' ++ alias 'fgrep=fgrep --color=auto' + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/colorls.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/colorls.sh ++ '[' '!' -t 0 ']' ++ '[' -z '' ']' ++ alias 'll=ls -l' ++ alias 'l.=ls -d .*' ++ INCLUDE= ++ COLORS= ++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"' ++ '[' -e /root/.dir_colors.xterm ']' ++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"' ++ '[' -e /root/.dircolors.xterm ']' ++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"' ++ '[' -e /root/.dir_colors ']' ++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"' ++ '[' -e /root/.dircolors ']' ++ '[' -z '' ']' ++ '[' -e /etc/DIR_COLORS.xterm ']' ++ '[' -z '' ']' ++ '[' -e /etc/DIR_COLORS.256color ']' +++ /usr/bin/tty -s +++ /usr/bin/tput colors ++ '[' x8 = x256 ']' ++ '[' -z '' ']' ++ '[' -e /etc/DIR_COLORS ']' ++ COLORS=/etc/DIR_COLORS ++ '[' -n /etc/DIR_COLORS ']' ++ '[' -e '' ']' +++ /usr/bin/dircolors --sh /etc/DIR_COLORS ++ eval 'LS_COLORS='\''rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:'\''; export LS_COLORS' +++ LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:' +++ export LS_COLORS ++ '[' -z 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:' ']' ++ /usr/bin/grep -qi '^COLOR.*none' /etc/DIR_COLORS ++ unset TMP COLORS INCLUDE ++ alias 'll=ls -l --color=auto' ++ alias 'l.=ls -d .* --color=auto' ++ alias 'ls=ls --color=auto' + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/java.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/java.sh ++ '[' -z /home/java/jdk-18.0.2.1+1 ']' + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/lang.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/lang.sh ++ sourced=0 ++ '[' -n zh_CN.UTF-8 ']' ++ saved_lang=zh_CN.UTF-8 ++ '[' -f /root/.i18n ']' ++ LANG=zh_CN.UTF-8 ++ unset saved_lang ++ '[' 0 = 1 ']' ++ unset sourced ++ unset langfile + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/less.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/less.sh ++ '[' -x /usr/bin/lesspipe.sh ']' ++ export 'LESSOPEN=||/usr/bin/lesspipe.sh %s' ++ LESSOPEN='||/usr/bin/lesspipe.sh %s' + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/vim.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/vim.sh ++ '[' -n '4.2.46(2)-release' -o -n '' -o -n '' ']' ++ '[' -x /usr/bin/id ']' +++ /usr/bin/id -u ++ ID=0 ++ '[' -n 0 -a 0 -le 200 ']' ++ return + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/which2.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/which2.sh ++ alias 'which=alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/sh.local ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/sh.local + unset i + unset -f pathmunge + export JAVA_HOME=/home/java/jdk-18.0.2.1+1 + JAVA_HOME=/home/java/jdk-18.0.2.1+1 + export PATH=/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/bin:/home/java/jdk-17.0.16+8/bin:/home/java/jdk-18.0.2.1+1:/home/java/jdk-18.0.2.1+1/bin:/home/maven/apache-maven-3.9.11/bin:/root/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin::/root/bin + PATH=/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/bin:/home/java/jdk-17.0.16+8/bin:/home/java/jdk-18.0.2.1+1:/home/java/jdk-18.0.2.1+1/bin:/home/maven/apache-maven-3.9.11/bin:/root/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin::/root/bin + '[' -f /root/.bashrc ']' + . /root/.bashrc ++ alias 'rm=rm -i' ++ alias 'cp=cp -i' ++ alias 'mv=mv -i' ++ '[' -f /etc/bashrc ']' ++ . /etc/bashrc +++ '[' '' ']' +++ shopt -q login_shell + PATH=/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/bin:/home/java/jdk-17.0.16+8/bin:/home/java/jdk-18.0.2.1+1:/home/java/jdk-18.0.2.1+1/bin:/home/maven/apache-maven-3.9.11/bin:/root/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin::/root/bin:/root/bin + export PATH + echo /home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/bin:/home/java/jdk-17.0.16+8/bin:/home/java/jdk-18.0.2.1+1:/home/java/jdk-18.0.2.1+1/bin:/home/maven/apache-maven-3.9.11/bin:/root/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin::/root/bin:/root/bin /home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/bin:/home/java/jdk-17.0.16+8/bin:/home/java/jdk-18.0.2.1+1:/home/java/jdk-18.0.2.1+1/bin:/home/maven/apache-maven-3.9.11/bin:/root/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin::/root/bin:/root/bin [root@localhost ~]# [root@localhost ~]# export PATH=$(echo "$PATH" | awk -v RS=: '!a[$0]++' | paste -sd:) [root@localhost ~]# java -version -bash: /home/java/jdk-18.0.2.1+1/bin/java: 无法执行二进制文件 [root@localhost ~]# echo "${PATH//:/$'\n'}" | grep -i jdk /home/java/jdk-18.0.2.1+1/bin /home/java/jdk-17.0.16+8/bin /home/java/jdk-18.0.2.1+1 确实是少了一次加载但还是存在冗余,这应该怎么解决
最新发布
07-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值