sh
Isso executa o programa chamado hello_world.sh no caminho de pesquisa do programa (PATH) . Se esse programa começar com uma linha shebang , essa linha indica que o programa deve ser passado para um intérprete para ser executado; caso contrário, o programa deve ser carregado como código nativo. A linha shebang é lida pelo kernel. Por exemplo, se a primeira linha de hello_world.sh for #!/bin/sh , o kernel lançará /bin/sh e passará hello_world.sh como argumento.
Se hello_world.sh não começar com um shebang nem um código nativo válido, o kernel retornará um erro quando você tentar executá-lo. Se você estiver fazendo isso a partir de um shell, o shell notará o erro e tentará executar hello_world.sh como um script de shell (como o segundo formulário abaixo).
sh script_name.sh
Isso executa o programa chamado sh encontrado no PATH, com script_name.sh passado como argumento. O programa sh , assumindo que é o shell usual, abrirá o arquivo chamado script_name.sh no diretório atual e o interpretará. Se o script começar com uma linha shebang, será ignorado. O script não precisa ser executável.
. script_name.sh
source script_name.sh
Quando você executa isso em um shell, qualquer uma dessas instruções informa ao shell em execução para interpretar os comandos no arquivo especificado. O script não é executado como um programa separado, mas como parte do processo de shell existente. Assim, o script pode afetar o diretório atual, o ambiente,… do shell em execução. Os comandos incorporados . e source são sinônimos, exceto que . procura apenas script_name.sh no PATH, enquanto em alguns shells source também procura no diretório atual.