【问题标题】:Using export command to alter PATH from shell script file使用 export 命令从 shell 脚本文件更改 PATH
【发布时间】: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


【解决方案1】:

PATH 中使用相对路径名没有意义。只有当您位于 node_modules 的父目录中时,才能找到任何二进制文件。我不认为再次运行export 有什么不同;你只是碰巧在正确的目录中。

假设node_path 在你的主目录中,试试

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

牛肉在node_modules前面添加$HOME/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2019-03-22
    • 2019-11-15
    • 2021-09-26
    相关资源
    最近更新 更多