這是有效的 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 行以使其有意義:用斜線替換反斜線。並使文件可執行(這無疑是預期的答案,但僅僅這樣做並不是正確的答案)。

相關內容