2015-03-31 2 views
0

Я настраиваю поле vagrant (VM) для имитации сервера. Идея состоит в том, что вы инициализируете виртуальную машину, запустив одну команду, и она сама по себе использует один файл сценария bash «bootstrap.sh».Использование команды export для изменения PATH из файла сценария оболочки

Я пытаюсь запустить ember на моей виртуальной машине.

Так что в файле сценария я устанавливаю узел, nvm, npm и все другие зависимости и прочее. Просто для справки, это то, что файл выглядит следующим образом:

echo "installing node version manager" 
curl https://raw.githubusercontent.com/creationix/nvm/v0.24.0/install.sh | bash 
source ~/.nvm/nvm.sh 

# EMBER CLI & DEPENDENCIES ... 

# Install node.js 
echo "Installing node.js" 
nvm install stable 
nvm use stable 

# Symlink node to node.js 
echo "node symlink" 
ln -s /usr/bin/nodejs /usr/bin/node 

# Install npm 
echo "Installing node package manager" 
apt-get install -y npm 

# Install Ember CLI 
echo "Installing Ember CLI" 
npm install -g ember-cli 

# Install Bower 
echo "Installing bower" 
sudo npm install -g bower 

# Install watchman from source 
apt-get install -y autoconf automake 
git clone https://github.com/facebook/watchman.git 
cd watchman 
./autogen.sh 
./configure 
make 
make install 
cd 

# Install Phantom.js 
echo "Installing Phantom.js" 
sudo npm install -g phantomjs 

# Do some weird path thing that makes npm find Ember (?) 
echo "Creating path for node modules" 
export PATH=node_modules/.bin:$PATH 

Но когда я бегу ember s он говорит: «уголек: команда не найдена».

Если я перезапускать эту строку в VM:

export PATH=node_modules/.bin:$PATH 

затем он работает.

Таким образом, кажется, что export PATH=node_modules/.bin:$PATH не работает сформировать файл сценария оболочки, но это не будет работать, если вы запустите его из командной строки (на виртуальной машине через SSH)

Почему это происходит и как я могу заставить эту команду работать так же из файла сценария, как если бы она запускалась из командной строки?

+2

Он работает, но он не сохраняется, поэтому, как только закончится сеанс оболочки, эта переменная идет с ним. Скорее всего, вам нужно изменить путь в файле '~/.bashrc'. – arco444

+2

Вы используете файл сценария или просто запускаете его? –

ответ

0

Не имеет смысла иметь относительный путь в PATH. Любые двоичные файлы будут найдены только в том случае, если вы находитесь в родительском каталоге node_modules. Я не думаю, что запуск export снова имел значение; вы просто оказались в правильном каталоге.

Предполагая node_path находится в вашем домашнем каталоге, попробуйте

export PATH=$HOME/node_modules/.bin:$PATH 

где говядина добавляет $HOME/ перед node_modules.

Смежные вопросы