unix env 命令无法找到文件,即使它在当前目录中

unix env 命令无法找到文件,即使它在当前目录中

我在从终端调用 env 时遇到问题。我运行的是最新的 Ubuntu 操作系统。以下是发生的情况:

$ ls
disarm.ss  hereis.ss  mat.ss  README  sg.ss  start-test  syntax.ss
$ env SCHEMEHEAPDIRS=/usr/lib/csv8.1/i3le sg.ss
env: sg.ss: No such file or directory

我已检查路径 /usr/lib/csv8.1/i3le 是否正确。以下是此目录中文件的权限:

$ ls -l
total 60
-rw------- 1 dtdannen dtdannen 17375 2011-03-29 23:05 disarm.ss
-rw------- 1 dtdannen dtdannen  9410 2011-03-29 23:05 hereis.ss
-rw------- 1 dtdannen dtdannen  9955 2011-03-29 23:05 mat.ss
-rw------- 1 dtdannen dtdannen   394 2011-03-29 23:05 README
-rwxrwxrwx 1 dtdannen dtdannen  2801 2011-03-29 23:05 sg.ss
-rwx------ 1 dtdannen dtdannen   137 2011-03-29 23:05 start-test
-rw------- 1 dtdannen dtdannen   678 2011-03-29 23:05 syntax.ss

我似乎无法弄清楚为什么 env 找不到“sg.ss”。这是权限问题吗?我知道你很少甚至从来不会对文件执行“chmod 777”(这里我对 sg.ss 执行了此操作),但我只是想看看这是否能使它工作。我需要在 python 程序中调用此命令,而不是直接通过命令行,但在这两种情况下我都遇到了相同的错误,因此我使用终端作为示例。

任何建议都值得赞赏:)

PS 我搜索了至少 20 分钟,没有找到类似的帖子。希望我没有重复提问。

编辑:尝试了同样的事情,但使用 ./sg.ss 而不是仅仅 sg.ss (仍然不起作用,同样的错误:()

答案1

查看文件 sg.ss 中的第一行,它很可能以 #!/blah 开头,检查 /blah 是否存在。

答案2

env将搜索 PATH 环境变量来搜索您的实用程序,就像您的 shell 的本机行为一样。./如果您想引用当前目录中的文件,请使用:

env SCHEMEHEAPDIRS=/usr/lib/csv8.1/i3le ./sg.ss

答案3

当前目录不在搜索路径上,并且由于sg.ss不包含任何斜杠,它被视为在路径中查找的名称(非常类似于的行为execl。你想要env SCHEMEHEAPDIRS=/usr/lib/csv8.1/i3le ./sg.ss

相关内容