【发布时间】:2018-09-06 08:38:58
【问题描述】:
我正在努力学习 UNIX。 我正在使用一本名为“Wicked Cool Shell Scripts”的书。
我被告知 .bash_profile 包含我的 bash 登录名,我可以添加路径,以便我在终端中输入的命令可以找到我正在编写的脚本。
我当前的 bash_profile 的内容是:
export PATH=~/bin:$PATH
当我输入 echo $PATH 时,我得到:
/usr/local/opt/php@7.0/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Library/Frameworks/Python.framework/Versions/3.3/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin
我想添加一个路径,以便 - 正如本书所建议的那样 - 我可以编写脚本并直接从命令行引用它们,而不必经常导航到该目录来运行它们。
我有一个带有 shebang 的文件。当我输入它的名称并在同一目录中时,它运行良好。我已将该文件移动到文件夹脚本中,该文件夹位于 crg/Users/ 下(即:Users/crg/scripts)
根据这本书,我现在可以更改我的$PATH 以包含该目录,这样当我输入该文件名时,程序就会运行。
我不能成功地做到这一点。 我不知道为什么。 每次编辑后,我退出终端并重新打开它,以确保它使用的是新编辑的 bash_profile。
根据第 5 页的书籍说明,我已尝试在我的 bash_profile 中输入此内容:
export PATH=”/Users/crg/scripts/:$PATH”
我保存我的 bash_profile,退出终端,重新打开它并输入 echo $Path
这是结果:
”/Users/crg/scripts/:??
这是不对的。事实上,这是非常错误的。它不允许我从指定的文件夹运行脚本。它似乎也完全覆盖了之前 bash_profile 中的所有内容,所以我不能 - 在完成“专业”建议的“简单编辑”之后 - 从终端运行 php -version 命令。
我完全不知道为什么会发生这种情况。
为什么这一行的开头有引号(但结尾没有)?
这行末尾的冒号和两个问号是什么意思?
如何向我的 bash_profile 添加/附加路径?
更多问题: 当我尝试使用“互联网”自己解决这个问题时,我发现了这个“简单”过程的许多有趣版本:这是“专业人士”建议的一个:
export PATH="${PATH}:/path/to/program/inside/package"
这和书上说的很不一样……
这是另一个版本的“专业人士”的“如何做”:
export PATH=$PATH:/usr/local/sbin/modemZapp
请注意,这个甚至没有引号。在两者中,PATH 变量都位于实际路径之前。
为什么有这么多关于如何执行这个简单任务的“版本”?
谁能告诉我如何为我的.bash_profile 添加路径?
更新:我已关注advice here,(将其添加到etc/paths)但这也不起作用。
当我在新终端中输入echo $PATH 时,我得到了完全相同的结果:
/usr/local/opt/php@7.0/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Library/Frameworks/Python.framework/Versions/3.3/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr:/usr/local/share/npm/bin:/Users/fhb/scripts:/opt/X11/bin
我不禁注意到最后一页上的评论:“我已经通过至少十几种不同的方法将目录添加到 $PATH。为什么有这么多,为什么这么少有效? "
【问题讨论】: