Esta é uma linha shebang válida?

Esta é uma linha shebang válida?

Tenho a seguinte dúvida sobre UNIX:

O que mais é necessário quando a linha superior sai

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

Estou pensando que qualquer que seja o nome do script, ele precisa receber permissão usando chmod para executá-lo.

Responder1

A primeira linha com o "#!" será um caminho completo para o programa a ser executado.

Os nomes de caminho no Linux têm uma barra entre os diretórios.

ou seja:

#!/bin/awk -f

ou

#!/bin/bash

ou

#!/usr/bin/perl

O primeiro script seria executado no programa de script usando awk, o segundo usando bash, o terceiro usando perl.

Você também terá que tornar o arquivo executável com:

$ chmod +x myscript.sh

Responder2

#!\bin\awk -fé uma linha shebang válida, mas não é útil. Declara que o arquivo deve ser interpretado pelo programa chamado \bin\awkno diretório atual. Assim, para responder literalmente à pergunta, existem duas maneiras de executar esse arquivo como um comando:

  • Crie um arquivo chamado \bin\awkno diretório atual, provavelmente copiando ou vinculando alguma versão do awk. Além disso, o script precisa ser tornado executável.

    ln -s /bin/awk '\bin\awk'
    chmod +x /path/to/script
    /path/to/script
    
  • Invoque awk explicitamente.

    awk -f /path/to/script
    

Se a modificação do arquivo for permitida, então a linha shebang deve ser editada para fazer sentido: substitua as barras invertidas por barras. E torne o arquivo executável (que é sem dúvida a resposta pretendida, mas apenas fazer isso não seria uma resposta correta).

informação relacionada