Bash PATH条目重复

  • 本文关键字:PATH Bash linux bash path
  • 更新时间 :
  • 英文 :


我使用fedora Linux,我手动安装了.net core、java并将路径添加到path

今天,我检查了我的PATH和下面的输出,正如你所看到的,jdk、dotnet和gradle条目都是重复的。有人能告诉我如何解决这个问题吗

/opt/jdk/bin:/opt/jdk/bin:/home/xxx/.local/bin:/home/xxx/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/opt/gradle/bin:/opt/dotnet:/opt/gradle/bin:/opt/dotnet

可读性:

/opt/jdk/bin:
/opt/jdk/bin:
/home/xxx/.local/bin:
/home/xxx/bin:
/usr/local/bin:
/usr/local/sbin:
/usr/bin:
/usr/sbin:
/opt/gradle/bin:
/opt/dotnet:
/opt/gradle/bin:
/opt/dotnet

以下是我添加到.bashrc文件中的条目

# Java path settings
export JAVA_HOME=/opt/jdk
PATH=$JAVA_HOME/bin:$PATH
# gradle building system
PATH=$PATH:/opt/gradle/bin
# Disable dotnet Telemetry
export DOTNET_CLI_TELEMETRY_OPTOUT=1
# Dotnet path settings
export DOTNET_ROOT=/opt/dotnet
PATH=$PATH:$DOTNET_ROOT
export PATH

修改PATH的设置文件的系统部分是/etc/bashrc和/etc/profile,它们都有下面引用的代码。这是重复造成的吗?但是当我读到评论时,/etc/bashrc需要重做,因为/etc/profile 的末尾没有设置pathmunge

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

有人能帮我吗?谢谢B

我有点接受它。

但我通过使用if解决了这个问题,下面是我的解决方案

if ! [[ "$PATH" =~ "$JAVA_HOME/bin:/opt/gradle/bin:$DOTNET_ROOT:" ]] 
then
PATH="$JAVA_HOME/bin:/opt/gradle/bin:$DOTNET_ROOT:$PATH"
fi
export PATH

相关内容

  • 没有找到相关文章

最新更新