这是有效的 shebang 行吗?

这是有效的 shebang 行吗?

我有以下关于 UNIX 的问题:

当顶线消失时还需要什么

#!\bin\awk -f
  to make it run as a command?

我认为无论脚本的名称是什么,都需要使用 chmod 授予其运行权限。

答案1

第一行带有“#!”将是要执行的程序的完整路径名。

Linux 中的路径名在目录之间有正斜杠。

IE:

#!/bin/awk -f

或者

#!/bin/bash

或者

#!/usr/bin/perl

第一个脚本将使用运行脚本程序awk,第二个使用bash,第三个使用perl

您还必须使用以下命令使文件可执行:

$ chmod +x myscript.sh

答案2

#!\bin\awk -f是一个有效的 shebang 行,但它不是一个有用的行。它声明该文件必须由\bin\awk当前目录中调用的程序解释。因此,从字面上回答这个问题,有两种方法可以将该文件作为命令运行:

  • \bin\awk创建一个在当前目录中调用的文件,可能是通过复制或链接某个版本的 awk.此外,该脚本需要可执行。

    ln -s /bin/awk '\bin\awk'
    chmod +x /path/to/script
    /path/to/script
    
  • 显式调用 awk。

    awk -f /path/to/script
    

如果允许修改文件,则应编辑 shebang 行以使其有意义:用斜杠替换反斜杠。并使文件可执行(这无疑是预期的答案,但仅仅这样做并不是正确的答案)。

相关内容