व्रगेंट के माध्यम से उबंटू पर अपने सर्वर पर्यावरण को स्थापित करने के लिए एक शेल स्क्रिप्ट लिखने की कोशिश कर रहा है और एक समस्या में चल रहा है जहां स्क्रिप्ट अप्रत्याशित रूप से समाप्त होती है। मैंने Vagrant के प्रावधान कॉन्फ़िगरेशन विकल्प में खोल स्क्रिप्ट के पथ को जोड़ा।वग्रेंट सेटअप के लिए शैल स्क्रिप्ट सेट करना
Vagrant:
# Specify our provision script
config.vm.provision "shell", path: "scripts/bootstrap.sh"
मेरे स्क्रिप्ट:
#!/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
चलाने के बाद, मैं भंडार .rbenv फ़ोल्डर में क्लोन किया जाना है और rbenv में ~/$ पथ को जोड़ा गया है की उम्मीद है। rbenv init फ़ंक्शन के साथ bashrc का मूल्यांकन किया गया और ~/.bashrc में डाल दिया गया। हालांकि, जब स्क्रिप्ट को वग्रेंट के प्रावधान चरण पर निष्पादित किया जाता है, तो मैं स्क्रिप्ट के साथ समाप्त होता हूं, केवल गिट रिपोजिटरी को क्लोन करता हूं और फिर मेरी स्क्रिप्ट में किसी और चीज को निष्पादित किए बिना समाप्त कर देता हूं।
आउटपुट:
==> default: Processing triggers for libc-bin (2.19-0ubuntu6) ...
==> default: Setting up rbenv
==> default: Cloning into '.rbenv'...
और फिर स्क्रिप्ट समाप्त हो जाता है और ~/.bashrc अपरिवर्तित छोड़ दिया है। मैं सोच रहा था कि मैं अपनी शेल स्क्रिप्ट कैसे बदल सकता हूं ताकि यह मेरी इच्छित कार्रवाई करेगा (जो आरबीएनवी को ~/.bashrc में जोड़ रहा है)। कोई विचार?
क्या स्क्रिप्ट _current user_ के संदर्भ में निष्पादित है? क्या यह स्क्रिप्ट चलने पर कहीं और '' 'अंक हो सकता है? डिबगिंग के लिए, अपनी स्क्रिप्ट में निम्नलिखित जोड़ें और इसके _stderr_ आउटपुट को कैप्चर करें: 'PS4 ='> $ LINENO: '; सेट-एक्सवी' – mklement0