Tenho alguns pontos que quero entender: tenho um script escrito na sintaxe bash e não contém a linha shebang (#!/bin/bash) e meu shell padrão é tcsh.
- ao dar permissão de execução ao arquivo e executá-lo no shell padrão (tcsh) digitando o caminho completo do arquivo, ele roda corretamente. Como o script é executado corretamente no tcsh e sem digitar a linha shebang?
- para o mesmo arquivo no shell padrão tcsh se eu usar o comando source para executá-lo, ele dará erro de sintaxe (mesmo se eu usar a linha shebang bash) por quê?
depois de algumas tentativas, descobri o seguinte: Obrigado, isso parece correto Fiz algumas tentativas e cheguei ao seguinte: - Usando o comando source (dot operator é um alias apenas no bash) para executar um arquivo: - Executa-o mesmo que não tenha permissão de execução - Executa usando o shell atual independentemente da linha shebang - Se a linha shebang existe e o arquivo é executado digitando seu nome (caminho total) (aqui precisa de permissão de execução), o arquivo é executado usando o shell na linha shebang. Se a linha shebang não existir e for executada pelo nome, o bash é sempre usado no meu caso, independentemente do shell atual. Não sei por que, é porque o bash vem primeiro no arquivo /bin?????? você pode verificar isso comigo
Se um script executável não tiver uma linha shebang, ele será executado por
/bin/sh
. Se você usarsource
para executá-lo, ele será executado no shell atual: