【问题标题】:bash "command not found" - is my PATH wrong [duplicate]bash“找不到命令”-我的路径错误[重复]
【发布时间】:2017-05-22 16:29:15
【问题描述】:

我是第一次使用 bash。编写了一个应该将“stats”作为命令的代码,但是每当我在命令行中使用“stats”时,我都会收到以下错误:

bash: stats: command not found

我搜索了一下,很多人都说这个错误通常与 PATH 问题有关。运行“echo $PATH”会产生以下结果:

/bin:/sbin:/usr/local/bin:/usr/bin:/usr/local/apps/bin:/usr/bin/X11:/nfs/stak/students/z/myname/bin:.

我确保我的程序开始于

#!/bin/bash 

我的路径错了吗?如果是这样,我该如何解决?如果没有,关于我还应该研究什么的任何建议?感谢大家的时间和帮助。

【问题讨论】:

  • 命令stats真的存在吗?你不是说stat(没有s)吗?
  • 脚本的名字叫做stats
  • 使用chmod +x ./stats 并使用./stats 运行您的脚本。
  • 如果它是您的“统计”脚本 - 这意味着它不可执行chmod 0755 statsfilename 然后用./statsfilename(在当前目录中)或/absolute/path/to/the/file执行它。
  • 脚本是否有 Windows/DOS 风格的行尾?尝试使用cat -vet stats 打印它,并查看第一行是“#!/bin/bash^M$”(DOS 风格,带有回车,由“^M”表示,在换行之前)还是只是“ #!/bin/bash$" (没有 "^M" = 没有回车 = unix 风格的行尾,这是你想要的)。

标签: bash


【解决方案1】:

可能是路径问题,也可能是权限问题。可以尝试一些事情。

1) 如果 stats 不在当前目录中,则将目录 (cd) 更改为 stats 所在的目录并执行

bash stats

如果 stats 执行正确,那么您至少知道脚本是正常的。否则,请查看脚本本身。

2) 尝试用

执行脚本
./stats

如果这给了

bash: ./stats: Permission denied

那么你有一个权限问题。做一个

chmod a+rx stats

然后重试。注意:a+rx 可能有点宽;有些人可能会建议

chmod 755 stats

是更好的选择。提示:从 cmets 中,我看到这是您的问题之一。

3) 从目录的名称,我得到文件在 NFS 上的印象。因此它可能被挂载为“noexec”,这意味着您无法从该挂载执行任何文件。你可以试试:

cp stats /tmp
chmod 700 /tmp/stats
/tmp/stats

4) 检查统计信息的完整路径名。如果你和stats还在同一个目录,试试

pwd

检查此目录是否存在于 PATH 中。如果没有,请添加它。

export PATH=$PATH:/nfs/stak/students/z/myname/344

然后再次尝试统计数据。

【讨论】:

    【解决方案2】:

    您的PATH 看起来很合理。 PATH 问题是此类错误的常见来源,但不是唯一的。

    错误消息“:没有这样的文件或目录”表明脚本文件具有 DOS/Windows 样式的换行符(由回车符和换行符组成)而不是 unix 样式的(只是换行符)。 Unix 程序(包括 shell)倾向于将回车误认为是行的一部分,从而导致严重的混乱。

    在这种情况下,它会将 shebang 行视为“#!/bin/bash^M”(其中“^M”表示回车),然后寻找名为“/bin/bash^M”的解释器,找不到它,并打印出类似“/bin/bash^M: No such file or directory”的内容。由于回车使终端返回到行首,“:没有这样的文件或目录”打印在“/bin/bash”部分的顶部,所以你看到的就是它。

    如果你有dos2unix 程序,你可以用它来转换成unix风格的行尾;如果没有,还有多种替代转换工具。但是您还应该弄清楚为什么该文件具有 Windows/DOS 格式:您是否使用 Windows 编辑器或类似的工具对其进行了编辑?不管是什么原因,你都应该确保它不会再次发生,因为 Windows/DOS 格式的文件会导致大多数 unix 程序出现问题。

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 2018-12-10
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2012-06-06
      相关资源
      最近更新 更多