我在从终端调用 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
。