% sudo ./my_script.sh var1 sudo: ./my_script.sh: command not found
Esta mensagem indica que o arquivo ./my_script.sh
não existe ou seu carregador não existe . Para um script, o carregador é o executável mencionado na linha shebang .
Verifique se o /usr/local/bin/zsh
existe e se não é um link simbólico quebrado.
Verifique se o arquivo realmente contém #!/usr/local/bin/zsh
como primeira linha e não, digamos #!/usr/local/bin/zsh
com alguns espaços em branco ou caracteres invisíveis depois dele ou no meio. Observe, em particular, que um retorno de carro é um dos caracteres invisíveis que poderiam quebrar as coisas. Você acabaria com um CR se você criasse (ou talvez se você tivesse editado) o script no Windows; se você editar scripts no Windows, verifique se eles estão salvos com os finais de linha configurados como “LF” ou “Unix” ou “Linux” ou qualquer que seja o nome do seu editor.
% sudo my_script.sh var1 sudo: my_script.sh: command not found
Este não funciona por um motivo simples: myscript.sh
não está no caminho de pesquisa do comando .
% sudo source my_script.sh var1 sudo: source: command not found
Este não funciona por um motivo simples: source
é um shell embutido, não é um executável. (Não faria sentido como executável, já que seu propósito é executar algum código de shell no shell atual - somente um shell pode fazer isso.)
Qual shell que você está executando atualmente é irrelevante para todos os três comandos.