【问题标题】:Configuring bash $PATH variable to find UNIX executable file配置 bash $PATH 变量以查找 UNIX 可执行文件
【发布时间】:2014-02-20 15:50:40
【问题描述】:

我有一个名为 git-feature 的自定义命令,它位于同名的 Unix 可执行文件中。我正在尝试在~/.bash_profile 中配置 $PATH 变量,以便它识别 Unix 文件。我更新了 PATH 变量以包含文件的路径:

export PATH=$PATH:~/Applications/MAMP/htdocs/code/git-shortcuts/

我的 bash 终端中的 echo $PATH 命令产生以下结果:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/myname/Applications/MAMP/htdocs/code/git-shortcuts/

但是尝试调用git-feature会导致以下错误:

-bash: git-feature: command not found

在 S.O. 上有一些类似的问题,但我发现没有一个能解决这种特定类型的问题。 是否需要以不同方式更改 PATH 变量才能让 bash 识别我的自定义命令?

【问题讨论】:

  • 您是否使用chmod +x git-feature添加了执行权限?
  • 如果你运行:/Users/myname/Applications/MAMP/htdocs/code/git-shortcuts/git-feature 会发生什么?是否找到并可执行?如果不是,那么您的路径上的目录错误。如果是这样,则没有明显的原因导致它失败。
  • 您需要在更改其内容后重新阅读您的个人资料,方法是注销并重新登录或执行“.~/.bash_profile”
  • 如果您将其自定义可执行文件添加到 PATH 变量中,那么无论运行which git-feature 打印~/Applications/MAMP/htdocs/code/git-shortcuts/git-feature 还是您看到/usr/bin/which: no somep in (path..... ) ??

标签: macos bash shell unix


【解决方案1】:

您正在正确修改 PATH 变量。

确保git-feature 确实在该目录中,它设置了可执行位 (+x),并且通向它的目录授予您执行它的权限:

MYFILE=/Users/myname/Applications/MAMP/htdocs/code/git-shortcuts/git-feature
ls -l "$MYFILE"
chmod +x "$MYFILE"
[ -x "$MYFILE" ] && echo "File can't be executed, check directory rights"

【讨论】:

  • 感谢您的反馈。不过,我还是有点麻烦。当我将您的代码添加到我的 .bash_profile 时,我收到以下错误:“-bash: MYFILE: command not found” 我不知道为什么 MYFILE 被视为函数而不是变量。
  • 您不需要从 .bash_profile 运行它,这是一次性设置 - 它会添加可执行位并显示命令是否可执行,无需运行每次登录时。
  • 关于您的错误,请确保您没有= 符号周围有空格,否则它将尝试执行 MYFILE 而不是为其分配值。
猜你喜欢
  • 2015-05-19
  • 2012-09-09
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 2019-05-19
相关资源
最近更新 更多