'vagrant ssh -c COMMAND'行为与'vagrant ssh'会话中运行命令不同

Mic*_*fen 5 ssh bash vagrant gruntjs

这有效:

vagrant ssh
cd /vagrant && grunt build
Run Code Online (Sandbox Code Playgroud)

这不是:

vagrant ssh -c 'cd /vagrant && grunt build'
Run Code Online (Sandbox Code Playgroud)

(退出bash: grunt: command not found)

为什么?

我要问的原因是我有一个shell脚本将站点部署到GitHub页面,我想在开始时添加一个构建步骤,以便在部署之前获得新的构建.

我也试过编写一个shell脚本,vagrant_build.sh如:

cd /vagrant
grunt build
Run Code Online (Sandbox Code Playgroud)

和流浪者一起跑vagrant ssh -c 'bash /vagrant/vagrant_build.sh',但它仍然找不到grunt.

文档说只vagrant ssh -c COMMAND运行一个命令,我需要从字面上理解100%吗?我把它解释为"你可以在一个终端中安装的任何东西".

Far*_*dix 5

因为grunt不在你vagrant的道路上.所以给它绝对的路径.

cd /vagrant && /path/to/grunt build
Run Code Online (Sandbox Code Playgroud)

  • 有趣的是,任何想法为什么nodejs垫片加载`vagrant ssh`而不是`vagrant ssh -c COMMAND`?`〜/ .bashrc`是不是被后者加载了? (3认同)