我第一次使用bash。写了一个应该采取的代码" stats"作为一个命令,但每当我使用" stats"在我的命令行中,我不断收到以下错误:
bash: stats: command not found
我用Google搜索,很多人都说这个错误通常与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
我的PATH错了吗?如果是这样,我该如何解决?如果没有,有什么建议我应该考虑什么?谢谢大家的时间和帮助。
答案 0 :(得分:1)
可能是路径问题,可能是权限问题。有些事要尝试。
1)如果stats不在您当前的目录中,请将目录(cd)更改为stats所在的目录并执行
bash stats
如果统计信息正确执行,那么您至少知道脚本是正常的。否则,请查看脚本本身。
2)尝试使用
执行脚本./stats
如果给出
bash: ./stats: Permission denied
然后你有权限问题。做一个
chmod a+rx stats
然后重试。注意:a + rx可能有点宽;有些人可能会建议
chmod 755 stats
是一个更好的选择。提示:从评论中我发现这是你的一个问题。
3)从目录名称,我得到文件在NFS上的印象。因此,它可能会被安装为“noexec”,这意味着您无法从该安装执行任何文件。你可以试试:
cp stats /tmp
chmod 700 /tmp/stats
/tmp/stats
4)检查统计信息的完整路径名称。如果您仍与统计信息位于同一目录中,请尝试
pwd
检查PATH中是否存在此目录。如果没有,请添加它。
export PATH=$PATH:/nfs/stak/students/z/myname/344
再次尝试统计数据。
答案 1 :(得分:0)
您的PATH
看起来很合理。 PATH
问题是这类错误的常见原因,但不是唯一的问题。
错误消息":没有这样的文件或目录"建议脚本文件具有DOS / Windows样式的行结尾(由回车后跟换行组成)而不是unix样式(只是换行)。 Unix程序(包括shell)倾向于将回车误认为部分线路,造成大量混乱。
在这种情况下,它将shebang线视为"#!/ bin / bash ^ M" (其中" ^ M"表示回车),去找一个名为" / bin / bash ^ M"的解释器,找不到它,然后输出像& #34; / bin / bash ^ M:没有这样的文件或目录"。由于回车使终端返回到行的开头,":没有这样的文件或目录"被打印在" / bin / bash"部分,所以你看到了。
如果您有dos2unix
程序,可以使用它转换为unix样式的行结尾;如果没有,有各种备用转换工具。但你也应该弄清楚为什么文件有Windows / DOS格式:你是用Windows编辑器编辑的,还是那样的?无论是什么导致它,你应该确保它不会再发生,因为Windows / DOS格式的文件会导致大多数unix程序出现问题。