【问题标题】:Add Path to OSX to El Capitan将 OSX 的路径添加到 El Capitan
【发布时间】: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 命令。

我完全不知道为什么会发生这种情况。

  1. 为什么这一行的开头有引号(但结尾没有)?

  2. 这行末尾的冒号和两个问号是什么意思?

  3. 如何向我的 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。为什么有这么多,为什么这么少有效? "

【问题讨论】:

    标签: bash path


    【解决方案1】:

    如果您仔细观察,要回答您的第一个问题,您的引号是 而不是 "。我猜你是在富文本编辑器而不是纯文本编辑器中编辑了你的 bash_profile 或这篇文章。如果您正在编写代码,我会推荐用于 Windows 的记事本或用于 *nix 的 nano。要解决此问题,请将“替换为”。

    要回答您的第二个问题,bash 非常宽容,它允许您以多种不同的方式设置字符串变量,即使没有引号。但是,当字符串包含空格时,您可能会遇到问题,例如:/Users/lilHenry/my scripts

    "${PATH}" 语法只是声明字符串的另一种方式。它的好处是它允许您将变量插入到字符串中,如下所示:

    prefix="foo" echo "${prefix}bar"

    这将输出foobar,而echo "$prefixbar" 将不会输出任何内容,因为尚未设置变量prefixbar。我建议坚持使用export PATH="/Users/me/bin:$PATH" 语法。

    【讨论】:

    • 谢谢,谢谢,谢谢,谢谢。我对使用 nano 感到胆怯,但是当我在其中打开 .bash_profile 时,我意识到使用非常旧版本的 TextWrangler 时会出错。这是其中的一小部分... ... PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}" export PATH 所以,以我为例,我写道this... # Setting a PATH for myScripts PATH="Users/crg/scripts:${PATH}" export PATH 注意,格式有很大不同;例如,括号换行。有点令人不安。再次感谢非常
    • 我很高兴有帮助。
    猜你喜欢
    • 2018-09-08
    • 1970-01-01
    • 2016-11-03
    • 2016-02-05
    • 2015-12-29
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2010-12-13
    相关资源
    最近更新 更多