我使用的是 kali linux 64 位。
我创建了一个 python 脚本,它需要 2 个参数来启动。我不想每次都输入完全相同的路径或在终端中使用的命令的历史记录中进行搜索。所以我决定创建一个简单的脚本,用它的参数调用 python 脚本。
#! /bin bash
python CreateDB.py ./WtfPath ./NoWtfPath/NewSystem/
这与我在终端中使用的命令完全相同。但是,当我尝试执行脚本文件时收到错误消息。
bash: ./wtf.sh: /bin: bad interpreter: Permission denied
wtf.sh具有可执行权限。
怎么了?
答案1
这里有一个空格而不是正斜杠:
#! /bin bash
应该:
#! /bin/bash
或者简单地
#!/bin/bash
(第一个空格是可选的)。 shebang ( #!
) 后面应跟路径到可执行文件,其后可能是一个论点,例如,
#!/usr/bin/env sh
在本例中/usr/bin/env
是可执行文件;man env
详情请参阅。
只是/bin
指一个目录。
答案2
值得注意的是,如果脚本所在的挂载点具有“noexec”属性,那么您可以随心所欲地执行命令,但它仍然不起作用,但是使用脚本作为参数调用解释器将(只要反过来,它不会尝试在 noexec 挂载上运行另一个脚本)。