1. Como posso ter certeza de que o script é executado pelo Bash, mesmo que
#!/bin/sh
é especificado (aparentemente, não garante)?
Para ter certeza de que um script escrito para sh
shell (como no seu caso - veja Qual é a diferença entre #! / bin / sh e #! / bin / bash? ) é executado pelo Bash, apenas execute o seguinte comando:
bash script_name
Assim, você não receberá mais esse erro.
2. Por que diria que essas duas fontes não podem ser encontradas quando estão
inequivocamente lá?
Ele não diz que esses arquivos originados não estão lá. Diz que o comando source
não foi encontrado. Isso é normal, porque desde que você inicia seu script com #!/bin/sh
line, seu script será executado usando sh
e não bash
como você pode pensar. Por que isso é normal? Porque o comando source
é um Bash incorporado, mas não um sh
incorporado. Para obter um arquivo em sh
, você deve usar .
(ponto). Exemplo:
. /etc/profile
. ~/.profile
Outra maneira é mudar a linha shebang para #!/bin/bash
como caos disse em sua resposta .