unix - 在 bash_profile 中设置路径

标签 unix terminal bash

为什么设置 PATH 需要在末尾添加 :${PATH}

PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"

当我附加一个路径时,我会这样做

PATH=$PATH:...

如何在不换行的情况下附加 PATH。也就是说,我如何将 PATH 附加到原始 PATH 语句。

例如,如果我想将以下所有内容放在第一行。这如何与 :${PATH} 部分交互?

PATH=$PATH:/usr/local/mysql/bin

最佳答案

将现有路径附加到 $PATH 环境变量的前端或末尾是有区别的。 bash 解析执行路径的方式是从列表的前面开始。这意味着如果您的路径中有这两个目录:

PATH="/dir1/bin:/dir2/bin"

而且它们都有可执行文件 test.sh 在里面,然后当你运行 test.sh 时,它会执行 /dir1/中的那个bin/test.sh 因为该目录首先出现在路径中。

此外,${PATH}$PATH 相同。

PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"

只是将 /Library/Frameworks/Python.framework/Versions/2.7/bin 添加到路径的前面

PATH=$PATH:/usr/local/mysql/bin

只是将 /usr/local/mysql/bin 添加到路径的末尾

那么如何在一行中完成这两项工作呢?像这样:

PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}:/usr/local/mysql/bin"

关于unix - 在 bash_profile 中设置路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231286/

相关文章:

regex - 使用 sed 命令查找和替换

macos - "You don' t 对/usr/bin 目录具有写权限。” 使用 Gem 命令安装 Sass 时

bash - 如何在执行前修改每个 bash 命令?

perl - 计算文本文件中匹配术语的数量?

winapi - 为什么 Unix 有 fork() 而没有 CreateProcess()?

c++ - 如何开始使用多线程编程?

macos - Mac OSX 终端 : how to fade old commands and stdout?

iphone - 运行 iPhone Simulator 时可以将 Xcode 控制台的日志输出重定向到终端吗?

bash - 数据库转储 | gzip-$?总是设置为 0

bash - 带双引号、单引号和无引号的假设