在linux中运行可执行文件

时间:2014-01-20 10:21:27

标签: linux executable

我是linux新手,有一个完整的noob问题。我已经使用chmod + x使我的python脚本可执行,现在我可以使用./前缀(./script_name)从终端运行它。我的问题是这个前缀究竟是什么意思,为什么需要运行可执行文件。

谢谢

3 个答案:

答案 0 :(得分:3)

与任何其他程序一样,shell也是一个等待输入的程序。现在,当您输入command1 arg1 arg2 ...时,shell执行的第一件事就是尝试从以下内容中识别command1

  1. 一个函数(在Bash shell中尝试typeset -f
  2. 内置命令(例如type
  3. 一个shell别名(在Bash shell中尝试alias
  4. 可以执行的文件
  5. 现在问题涉及最后一点一个可以执行的文件。 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。在您的情况下,文件可能不在路径上,因此您需要告诉操作系统确切的位置。您可以通过指定可执行文件的路径来实现。这就是我所说的./:在我当前的工作目录中查找可执行文件。它被称为“相对路径”,当你想要引用的东西接近你当前的工作目录时,它们很方便。