"vagrant ssh -c COMMAND"命令的行为与在“vagrant ssh”会话中运行命令不同。

6
这个有效:
vagrant ssh
cd /vagrant && grunt build

这个不是:
vagrant ssh -c 'cd /vagrant && grunt build'

(退出并显示 bash: grunt: command not found)为什么?我问这个问题是因为我有一个shell脚本将网站部署到GitHub Pages,我想在部署之前添加一个构建步骤以获得最新的构建。我还尝试编写一个名为vagrant_build.sh的shell脚本:
cd /vagrant
grunt build

使用vagrant运行命令 vagrant ssh -c 'bash /vagrant/vagrant_build.sh',但仍然无法找到grunt
文档说vagrant ssh -c COMMAND运行单个命令,我需要100%按照字面意思理解吗?我一直将其解释为“在终端中可以放入一行的任何内容”。
1个回答

5
因为grunt没有在你的vagrant路径中,所以需要给出绝对路径。
cd /vagrant && /path/to/grunt build

3
有趣,你知道为什么使用“vagrant ssh”命令加载nodejs shims,而使用“vagrant ssh -c COMMAND”命令不会加载吗?是因为后者没有载入“~/.bashrc”吗? - Michael Taufen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接