位置:/Users/用户名/.bash_profile
以下为我的配置,仅供参考
# 这个路径是你安装的jdk版本的路径
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
# MySQL文件夹路径
export MySQL_HOME=/usr/local/mysql
# 这个路径是你rocketmq解压后的文件夹路径
export RocketMQ_HOME=/usr/local/rocketmq-all-5.1.2-bin-release
export Python3_9=/Users/xcdh/Library/Python/3.9
# 定义一个数组,包含要添加到 PATH 的路径
paths=(
# jdk-1.8
"$JAVA_HOME/bin"
# mysql
"$MySQL_HOME/bin"
# rocketmq
"$RocketMQ_HOME/bin"
# Python3_9
"$Python3_9/bin"
)
# 创建一个临时变量,用于存储数组中所有路径
new_path=""
# 循环遍历数组并将路径依次添加到临时变量中
for item in "${paths[@]}"; do
if [ -d "$item" ] && [[ ":$new_path:" != *":$item:"* ]]; then
new_path="$new_path:$item"
fi
done
# 移除可能存在的前导冒号
new_path="${new_path#:}"
# 设置新的 PATH 变量
export PATH="$new_path:$PATH"
之后添加新的路径变量时,直接在paths数组中添加一行代码即可,函数会执行将数组路径依次添加到PATH中
问题一:mac配置文件.bash_profile
中export PATH=/usr/local/mysql/bin:$PATH
是什么意思?
这行命令是在Unix/Linux系统的shell中用来修改环境变量 PATH
的命令。
具体来说,这个命令执行了以下操作:
export
:这是一个shell命令,用于将后面的变量设置为环境变量,以便在当前shell会话中和后续子进程中都可用。
PATH=/usr/local/mysql/bin:$PATH
:这部分命令将 /usr/local/mysql/bin
添加到现有的 PATH
环境变量中。$PATH
是一个特殊的变量,它代表了当前 PATH
环境变量的值。通过在新的路径 /usr/local/mysql/bin
前面加上 $PATH
,你实际上将这个路径添加到了 PATH
变量的前面,这意味着系统将首先搜索 /usr/local/mysql/bin
来查找可执行文件,然后再搜索原来的路径。
例如,如果原来 PATH
包含 /usr/bin:/bin
,那么执行这个命令后,新的 PATH
将会是 /usr/local/mysql/bin:/usr/bin:/bin
,这样,系统会首先查找 /usr/local/mysql/bin
目录中的可执行文件,然后才是 /usr/bin
和 /bin
目录。
这种操作通常用于将自定义或特定的目录添加到 PATH
环境变量中,以便系统可以方便地找到和执行这些目录中的可执行文件。在这个例子中,/usr/local/mysql/bin
目录可能包含MySQL数据库的相关命令,通过将其添加到 PATH
中,你可以在命令行中轻松地运行这些MySQL命令而无需输入完整的路径。
问题二:/usr/bin:/bin中间的冒号是什么?
在Unix和Linux系统中,路径(Path)通常由冒号(:
)分隔的一组目录路径组成。在 /usr/bin:/bin
这个字符串中,冒号就是用来分隔不同目录路径的字符。
具体来说,这个路径字符串表示了两个目录路径:/usr/bin
和 /bin
。这两个目录通常用于存储可执行文件,比如系统命令和工具。当你在命令行中输入一个命令时,系统会根据 PATH
环境变量中定义的路径顺序来搜索这些目录,以找到要执行的命令的可执行文件。
例如,如果你输入了命令 ls
,系统会在 PATH
中的每个目录中查找是否存在名为 ls
的可执行文件。如果 /usr/bin
目录中有 ls
可执行文件,那么系统会执行该文件。如果不在 /usr/bin
中找到,系统将继续在 /bin
目录中查找。
使用冒号来分隔路径是一种Unix和Linux系统的约定,它使得系统可以轻松地管理和查找可执行文件,同时允许用户自定义他们的 PATH
环境变量以包含其他目录。
问题三:mac如何在终端查看当前 PATH 环境变量?
要在终端中查看当前 PATH
环境变量的值,你可以使用 echo
命令,如下所示:
echo $PATH
在执行这个命令后,终端会显示当前的 PATH
环境变量的值,通常是一系列用冒号分隔的目录路径,每个路径表示一个可执行文件的搜索位置。
例如,你可以得到类似以下的输出:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
这表示 PATH
包含了五个目录路径,系统会按照它们的顺序来查找可执行文件。
问题四:export PATH=/usr/local/mysql/bin和export PATH=/usr/local/mysql/bin:$PATH有什么区别
export PATH=/usr/local/mysql/bin
和 export PATH=/usr/local/mysql/bin:$PATH
都用于修改 PATH
环境变量,以包含 /usr/local/mysql/bin
这个目录,但它们之间有重要的区别。
export PATH=/usr/local/mysql/bin
:
这个命令将 PATH
环境变量的值设置为 /usr/local/mysql/bin
。这意味着现有的 PATH
值将被完全替换为 /usr/local/mysql/bin
。如果之前 PATH
中包含其他目录,它们将被移除而不再可用。
export PATH=/usr/local/mysql/bin:$PATH
:
这个命令将 /usr/local/mysql/bin
目录添加到现有的 PATH
值的前面,通过使用 $PATH
将原有的 PATH
值附加在新目录的前面,以冒号分隔。这样,/usr/local/mysql/bin
目录会成为 PATH
中的第一个搜索路径,然后才是原有的 PATH
值。
通常情况下,将新目录添加到 PATH
的前面是一个常见的做法,因为这样可以确保新的目录中的可执行文件具有更高的优先级,而不会被系统中其他目录中的同名可执行文件所覆盖。
例如,如果原始的 PATH
包含了 /usr/bin:/bin
,那么执行以下命令:
export PATH=/usr/local/mysql/bin:$PATH
新的 PATH
将会是 /usr/local/mysql/bin:/usr/bin:/bin
,这样,系统会首先查找 /usr/local/mysql/bin
目录中的可执行文件,然后再搜索 /usr/bin
和 /bin
目录。这确保了你可以方便地运行 /usr/local/mysql/bin
目录中的命令而无需输入完整的路径。
问题五: PATH=/usr/local/mysql/bin:$PATH和export PATH=/usr/local/mysql/bin:$
PATH有什么区别?
PATH=/usr/local/mysql/bin:$PATH
和 export PATH=/usr/local/mysql/bin:$PATH
这两个命令都用于修改 PATH
环境变量,但它们之间存在重要的区别:
PATH=/usr/local/mysql/bin:$PATH
:
这个命令将当前Shell会话中的 PATH
环境变量设置为 /usr/local/mysql/bin
目录加上原有的 PATH
值。但这个修改仅在当前Shell会话中生效,不会影响其他Shell会话,也不会在用户注销或重新登录后保留。
export PATH=/usr/local/mysql/bin:$PATH
:
这个命令也将当前Shell会话中的 PATH
环境变量设置为 /usr/local/mysql/bin
目录加上原有的 PATH
值,并且使用 export
命令将这个修改后的 PATH
变量导出为环境变量。导出的环境变量将在当前Shell会话中以及在后续的子进程中可用,而不仅仅局限于当前Shell。
总之,主要的区别在于 export
命令。如果你希望修改的 PATH
环境变量在当前Shell会话和其后的子进程中都可用,通常会使用 export PATH=/usr/local/mysql/bin:$PATH
这种方式。如果只需要在当前Shell会话中临时修改 PATH
,那么可以使用 PATH=/usr/local/mysql/bin:$PATH
,但这种修改通常不会持续到其他会话或系统重启。