我在Windows主机上使用Vagrant和VirtualBox设置了Ubuntu来宾框。我正在尝试编写一个shell脚本......
vagrant up
vagrant ssh
vagrant up
完成后
cd
成功连接到来宾计算机后,成为客户机中的特定项目目录现在我的vagrant_shell_script.sh文件包含以下内容:
vagrant up && vagrant ssh && echo 'cd vagrant/rails_tutorial/sample_app'
当我在Git Bash中执行它时,一切正常,包括通过SSH连接到来宾机,但是在成功连接之后,脚本似乎停止工作并且不执行最终的cd
命令。我认为这是因为它不再能够通过特定的Bash实例直接与我的主机通信(如果我错了,请纠正我)。
一旦SSH连接成功,有没有办法让它直接导航到目标目录?
如果这是一个愚蠢的问题,请原谅我 - 对于bash脚本来说相对较新。
答案 0 :(得分:3)
This solved it.这有点hacky,但正在运行
vagrant up && vagrant ssh -- -t 'cd /vagrant/rails_tutorial/sample_app; /bin/bash'
让你进来。出于某种原因,如果你没有发射外壳,流浪汉会继续踢你。
vagrant ssh --
允许您将命令传递到SSH客户端。这是流浪汉自己的效用。下一个标志-t
是一个SSH标志,它允许SSH在将控制权交还给您之前执行某些命令。您将命令放在-t
标志之后,但请确保以<last command> ; /bin/bash
结束它,以便它为您启动一个shell,并且您不会被踢出。