我是linux新手,有一个完整的noob问题。我已经使用chmod + x使我的python脚本可执行,现在我可以使用./前缀(./script_name)从终端运行它。我的问题是这个前缀究竟是什么意思,为什么需要运行可执行文件。
谢谢
答案 0 :(得分:3)
与任何其他程序一样,shell也是一个等待输入的程序。现在,当您输入command1 arg1 arg2 ...
时,shell执行的第一件事就是尝试从以下内容中识别command1
:
typeset -f
)type
)alias
)现在问题涉及最后一点一个可以执行的文件。 UNIX内核将{strong>需要exec()
系统调用中的可执行文件的绝对路径(请参阅man exec
)。
要获取文件的绝对路径,shell首先在 $ PATH 变量中指定的目录中查找命令。
因此,如果您指定相对路径,例如../abc/command1
或./command1
,则bash将能够找到该文件并将其传递给exec()
系统调用。
如果以上4个步骤都无法找到shell的command1
输入,您将获得:
$ command1
command1: command not found
但是,如果文件的绝对路径已解析,但它不可执行,则会得到:
$ command1
bash: ./command1: Permission denied
参考文献:
答案 1 :(得分:2)
这意味着当前目录和脚本位于当前目录
中答案 2 :(得分:1)
当使用可执行文件名($PATH
vs foo
)时,操作系统会搜索您的./foo
。在您的情况下,文件可能不在路径上,因此您需要告诉操作系统确切的位置。您可以通过指定可执行文件的路径来实现。这就是我所说的./
:在我当前的工作目录中查找可执行文件。它被称为“相对路径”,当你想要引用的东西接近你当前的工作目录时,它们很方便。