Provare a scrivere uno script di shell per configurare il mio ambiente server su Ubuntu tramite Vagrant e sto correndo in un problema in cui lo script termina in modo imprevisto. Ho aggiunto il percorso allo script della shell nell'opzione di configurazione della fornitura di Vagrant.Impostazione di Shell Script per Vagrant Setup
Vagrant:
# Specify our provision script
config.vm.provision "shell", path: "scripts/bootstrap.sh"
Il mio script:
#!/bin/bash
# Install dependencies for Ruby
sudo apt-get update
sudo apt-get install -y git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common
# Setting up rbenv
echo 'Setting up rbenv'
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
Dopo la corsa, mi aspetto il repository da clonare nella cartella .rbenv e di avere rbenv aggiunto al $ PATH in ~ /. bashrc insieme con la funzione init di rbenv valutata e inserita in ~/.bashrc. Tuttavia, quando lo script viene eseguito sul passo di provisioning di Vagrant, finisco con lo script solo clonando il repository git e quindi terminando senza eseguire nient'altro nel mio script.
uscita:
==> default: Processing triggers for libc-bin (2.19-0ubuntu6) ...
==> default: Setting up rbenv
==> default: Cloning into '.rbenv'...
E poi lo script termina e ~/.bashrc è rimasto invariato. Mi stavo chiedendo come posso cambiare il mio script di shell in modo che esegua l'azione che voglio (che sta aggiungendo rbenv a ~/.bashrc). Qualche idea?
Lo script è eseguito nel contesto dell'utente _corrente_? Potrebbe essere che '~' punti altrove quando viene eseguito lo script? Per il debug, aggiungi quanto segue al tuo script e acquisisci anche il suo output _stderr_: 'PS4 = '> $ LINENO:'; imposta -xv' – mklement0