如何在 Linux 上永久添加到 bash $PATH
您需要设置一个名为 PATH 的变量。命令的搜索路径由 $PATH shell 变量定义。它只是一个以冒号分隔的目录列表,shell 会在这些目录中查找命令。默认路径与系统相关,由为您安装 bash 或操作系统的系统管理员设置。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 终端 |
类别 | Linux shell 脚本 |
先决条件 | bash/zsh/sh |
操作系统兼容性 | AIX • Alma • Alpine • Arch • BSD • Debian • Fedora • HP-UX • Mint • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • Unix • WSL |
预计阅读时间 | 3 分钟 |
查看当前的$PATH设置
键入以下 echo/printf 命令:
echo "$PATH" ## OR use the printf ## printf "%s\n", $PATH
示例输出:
/home/vivek/perl5/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$PATH bash 变量是一个以冒号分隔的目录列表,shell 在其中查找命令。
如何正确添加路径到PATH?
语法是:
PATH="$PATH:/new/dir1/here" PATH="$PATH:/new/dir1/here"
或者
PATH="/new/dir1/here:$PATH" PATH="/new/dir1/here:/new/dir2/here/:$PATH"
要将 $HOME/bin/ 目录添加到路径类型:
让我们在当前会话中添加 bash $PATH:
## ~/bin/ to be searched after all other directories ## PATH="$PATH:$HOME/bin/"
或者
## ~/bin/ to be searched before all other directories ## PATH="$HOME/bin/:$PATH"
第一种语法在 PATH 末尾添加 $HOME/bin/。第二种语法在 PATH 开头添加 $HOME/bin/。
图 01:示例 bash shell 会话
永久添加目录到 bash shell $PATH
要永久添加 shell 路径,请使用文本编辑器(如 vi/vim 或 nano)编辑 ~/.profile 或 ~/.bash_profile 文件。例如:
$ vi ~/.profile
或者
$ vi ~/.bash_profile
根据您的需要附加路径设置。例如:
## ~/bin/ to be searched after all other directories ## export PATH="$PATH:$HOME/bin/"
$ source ~/.profile
或者
$ source ~/.bash_profile
验证它,键入:
$ echo "$PATH"
我在 Ubuntu Linux 上的 PATH 设置(点击放大)
关于在 Linux 上为所有 bash 用户添加 $PATH 的说明
您需要编辑 /etc/profile 或在 /etc/profile.d/ 目录中添加新文件。例如,以下是如何为所有 Linux 用户将名为 /opt/app1/bin 和 /opt/app2/bin 的新目录添加到 $PATH:
$ sudo vim /etc/profile.d/custom_app_path.sh
附加以下配置:
# Add following two apps to all users $PATH export PATH="$PATH:/opt/app1/bin:/opt/app2/bin"
保存并关闭文件。
条件 PATH 设置
下面说明了如何使用 if..then..fi Linux 条件语句扩展 $PATH 以包含 snappy 应用程序所在的目录:
# First, defines the variable snap_bin_path as the path to the snap binary directory snap_bin_path="/snap/bin" # Use the if statement to check if the PATH variable contains the snap_bin_path directory. if [ -n "${PATH##*${snap_bin_path}}" ] && [ -n "${PATH##*${snap_bin_path}:*}" ]; then export PATH="$PATH:${snap_bin_path}" fi
如果尚未设置任何默认值,请确保设置了基本发行版默认 xdg 路径:
# # Check if the XDG_DATA_DIRS environment variable is empty. # The -z operator returns true if the value of a variable # is empty and false otherwise. # So if the XDG_DATA_DIRS environment variable is empty, # the next line exports the XDG_DATA_DIRS environment variable with # the /usr/local/share and /usr/share directories appended to it. # if [ -z "$XDG_DATA_DIRS" ]; then export XDG_DATA_DIRS="/usr/local/share:/usr/share" fi
查看“如何在 Bash Shell 中找出变量是否为空”页面了解更多信息。
总结
现在,我希望您知道如何通过编辑配置文件在 Linux 和类 Unix 系统下永久添加 bash $PATH。想了解有关 bash 的更多信息?尝试使用 help 命令或 man command/info 命令阅读手册页,如下所示:
$ man bash
$ info bash
$ help printf
$ help echo
$ help if