我有一个python脚本abc.py。在外壳脚本文件中,我将其称为./abc.py
在abc.py顶部,我有#!/usr/bin/python
test -x abc.py && echo true || echo false
返回true
执行shell脚本时,它显示./abc.py: Command not found.
如果我将其称为python ./abc.py
而不是./abc.py
问题只与我今天创建的abc.py文件有关。同一目录中目的和名称不同的旧python脚本可以正常工作。
我已引用文件BTW的正确路径。可能是什么问题?
答案 0 :(得分:1)
在tcsh
中,当解释器无效时会发生这种情况:
$ cat foo
#!/invalid
$ tcsh -c './foo'
./foo: Command not found.
$ bash -c './foo'
bash: ./foo: /invalid: bad interpreter: No such file or directory
这可能有几个原因。也许您的系统路径错误:
% type python
python is /usr/local/bin/python
在这种情况下,脚本需要以#!/usr/local/bin/python
开头。
或者,脚本可能具有Windows行尾(回车):
$ cat -v foo
#!/usr/bin/python^M
...^M
在这种情况下,请保存为Unix行尾。
答案 1 :(得分:0)
尝试如下复制您的设置:
文件:asdf.py
#!/usr/bin/python
print("Hello World")
文件:asdf.sh
#!/bin/bash
if [ -x asdf.py ]; then ./asdf.py ; else echo "Arrrrgh. File does not exist or does not have executable permisions"; fi
现在我将文件保存在同一目录中,例如在桌面上,使其可执行并在终端上运行shell
脚本。
usr@cmptr $ chmod +x asdf.{py,sh}
usr@cmptr $ ls -la asdf.{py,sh}
-rwxr-xr-x 1 usr usr 613 Mar 15 22:22 asdf.py
-rwxr-xr-x 1 usr usr 56 Mar 15 22:14 asdf.sh
usr@cmptr $ ./asdf.sh
Hello World
现在,也许我误解了您的设置,但这应该可以正常工作。