Crie um arquivo como mais, adb [duplicate]

0

No Ubuntu, se eu digitar which more , ele exibirá o caminho do comando more como /bin/more , indicando que é um arquivo. Mas eu não vejo nenhuma extensão para ele nem um tipo associado, provavelmente porque são executáveis simples. Como posso criar um arquivo que poderia echo uma string simples?
Eu não quero criar um arquivo .sh porque se eu quiser passar o arquivo como um comando com outro comando, eu teria que digitar .sh também. TIA

    
por Akash Agarwal 09.08.2016 / 13:15

2 respostas

3

Você não precisa usar a extensão .sh para seus scripts de shell. Eles devem começar com um shebang para sinalizar que é um script de shell. #!/bin/bash é o shebang de um script bash, ou se você quiser que o SO decida qual shell usar, com base no uso padrão do shell #!/bin/sh .

Para poder executar o script como um comando, apenas digitando o nome, ele deve ter; um shebang, permissões executáveis e deve estar localizado em um diretório incluído em sua variável de ambiente PATH.

Você pode ver todos esses locais usando:

echo $PATH

A saída deve ser:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Quando essas três condições forem cumpridas, seu script será executado apenas digitando o nome.

    
por Arronical 09.08.2016 / 13:37
4

Un * x como o SO não está interessado em extensões de arquivo. Para tornar um script de shell executável, coloque

#!/bin/sh

como primeira linha no script para definir o interpretador (ou #!/bin/bash se você precisar de extensões bash ou qualquer shell que você escolher). E mude o modo para executável:

chmod a+x <filename>

Você precisa fornecer o caminho completo ou relativo para o executável, se ele não estiver em um diretório em seu ambiente PATH.

Editar:

Se houver um subdiretório ./bin em seu diretório inicial, isso geralmente será incluído em seu $ PATH ao efetuar login (consulte o script .profile). Então você pode criar $ HOME / bin e colocar o arquivo executável lá

    
por ridgy 09.08.2016 / 13:30