我在文件foo
中有一个python 3程序,该文件具有执行权限,脚本的第一行是
#!/usr/bin/python3
当我直接从python运行文件时,即:
/usr/bin/python3 foo 3 boo
一切运行都很好,但是当我尝试通过调用文件名来运行程序时,我得到了:
foo 3 boo
foo: Command not found.
即使指定脚本的相对或完整路径,我也会得到相同的响应。
./foo 3 boo
./foo: Command not found.
/full/path/to/the/file/foo 3 boo
/full/path/to/the/file/foo: Command not found.
所请求的更多信息:
head -2 foo
#!/usr/bin/python3
which python3
/usr/bin/python3
在tcsh工作,问题出在哪里?
我正在通过ssh在远程大学计算机上工作,系统管理员是否可能以某种方式阻止这种情况发生?
答案 0 :(得分:3)
您需要指定脚本的绝对路径。尝试
./foo 3 boo
,与脚本位于同一目录中。否则,shell只会在您的PATH
中查找不存在的名为foo
的东西。
答案 1 :(得分:0)
您必须提供文件的路径
./foo
如果仅调用“ foo”,则外壳程序将在环境变量$ PATH中查找包含“ foo”二进制文件的文件夹,而他将找不到它...
答案 2 :(得分:0)
我正在使用python3,仅是一个示例。.
只是一个测试脚本..
$ cat test.py
#!/python/v3.6.1/bin/python3
import os
print(os.system("ls"))
$ which python3
/python/v3.6.1/bin/python3
允许其可执行。.我不确定脚本foo
是否在您的情况下可执行。
$ chmod +x test.py
测试运行..
$ ./test.py
a.py Backup File_Write_Method NWK-old Python_aritsTest Python_Ftp Python_Mail Python_Primer test.py
argpass BASH Network_DeOps Python-3.6.3 Python_Dump Python_FTP Python_Panda readme_python tmp
awk.sh dnspython nslookup Python-3.6.3.tar.xz Python_excep Python_ldap Python_Parsers Regular_Expr tt.csv
0
这可能是shell问题,因为我复制了tcsh shell并无法运行。.
$ tcsh $ ./test ./test: Command not found.
但是它可以运行,当我像下面那样运行时。.
tcsh -c ./test.py
答案 3 :(得分:0)
假设您的脚本是可执行文件,并且/ usr / bin / python3中有python3。我认为您正在尝试从安装有noexec参数的分区中运行脚本,以检查是否应运行该问题:
mount | grep <partition> | grep noexec
如果我对的话,您可以使用exec选项挂载分区或将脚本移动到其他地方。