Source not found on Vagrant up

I have the code below in Vagrantfilewhich calls the below script. The script runs to the end of the last line source $dotfile. When it comes to source, the script says source: not found. The line used to cat $dotfilework just fine, so the file clearly exists.

Why is this file somehow not found for the command source, but does it work for the previous command cat?

output error

==> default: /vagrant/scripts/create_functions_dotfile.sh: 14: /vagrant/scripts/create_functions_dotfile.sh: source: not found

Vagrantfile

config.vm.provision "#{script["name"]}", type: "shell" do |shell|
  shell.inline = "/bin/sh /vagrant/scripts/create_functions_dotfile.sh"
end

scripts/create_functions_dotfile.sh

#!/bin/sh

dotfile=/home/vagrant/.functions.sh

for file in /vagrant/scripts/functions/*; do
  echo "cat $file >> $dotfile"
  cat $file >> $dotfile
done

echo "source $dotfile" >> /home/vagrant/.bashrc
cat $dotfile
source $dotfile
+4
source share
1 answer

The source is defined for #! / Bin / bash, so either you

  • replace

    #!/bin/sh 
    

    from

    #!/bin/bash 
    
  • replace

    source $dotfile
    

    from

    . $dotfile
    

ETA: In fact, the error complains that the "source" was not found, not its argument.

+4
source

All Articles