【发布时间】:2015-06-04 22:57:45
【问题描述】:
我正在设置一个vagrant 框(VM)来模拟服务器。这个想法是您通过运行一个命令来初始化 VM,然后它使用单个 bash 脚本文件“bootstrap.sh”来配置自己。
我正在尝试在我的虚拟机上运行 ember。
所以在脚本文件中,我安装了 node、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 时,它显示“ember:找不到命令”。
如果我在虚拟机中重新运行这一行:
export PATH=node_modules/.bin:$PATH
然后就可以了。
因此,export PATH=node_modules/.bin:$PATH 似乎在 shell 脚本文件中不起作用,但如果您从命令行运行它(通过 ssh 在 VM 上),它确实起作用
为什么会发生这种情况,如何使该命令从脚本文件中运行,就像从命令行运行一样?
【问题讨论】:
-
它确实有效,但它不会持续存在,因此一旦 shell 会话结束,该变量就会随之而来。很有可能需要修改
~/.bashrc文件中的路径。 -
您是在采购脚本文件,还是只是在运行它?
标签: bash unix ember.js path vagrant