【问题标题】:Why is my command not found but works in the command line?为什么找不到我的命令但在命令行中有效?
【发布时间】:2014-01-30 12:27:36
【问题描述】:

这是我脚本的一部分:

read -p "[q] What is the meteor project's location? "
PATH=$REPLY
cd $PATH
cd src
echo $(pwd)
mrt bundle bundle.tar.gz

它打印正确的工作目录。在控制台中输入mrt bundle bundle.tar.gz 有效。 执行我的脚本,我得到meteor_bundle.sh: line 9: bash: command not found。可能是什么原因?

【问题讨论】:

  • 它只在PATH 上显示。 在这两种情况下,您都需要回显$PATH。这种差异可能会解释这个问题。
  • 啊,哦,我明白了。我覆盖了$PATH 变量,这就是为什么位于/bin 某处的mrt 不再可用的原因。

标签: linux bash shell path


【解决方案1】:

你选择的变量名不好:PATH在 Bash 中有一个特殊的含义:它用来指示 Bash 在哪里寻找可执行程序。选择其他名称(最好是小写,参见@Gordon 的评论)应该没问题。

【讨论】:

  • 是的,这是一个糟糕的选择。谢谢你帮助我;我没有看到它,尽管它几乎是该脚本中唯一的变量 :-)
  • 这就是为什么在 shell 脚本中使用小写(或混合大小写)变量名是个好主意——有一堆特殊含义的变量,很容易被错误地覆盖。 ..但所有特殊的都是大写的。
【解决方案2】:

您应该使用mrt 的完整路径,因为您更改了PATH 的值。或者从第二行为变量选择另一个名称。

请参阅以下帖子以准确了解PATH 环境 变量的用途:

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2013-02-06
    • 2017-03-14
    • 2012-12-20
    • 2017-04-29
    • 2019-09-21
    相关资源
    最近更新 更多