with provisioner provision bash shell vagrant

bash - provisioner - Automáticamente chdir al directorio vagabundo sobre "vagabundo ssh"



vagrant reload--provision (5)

Necesita agregar cd /vagrant a su .bashrc en la vm. La mejor forma de hacerlo es en su script de aprovisionador.

Si no tiene un script de aprovisionador, realice uno agregando esta línea a su Vagrantfile antes de end :

config.vm.provision "shell", path: "scripts/vagrant/provisioner.sh", privileged: false

La ruta es relativa a la raíz del proyecto donde se encuentra Vagrantfile, y el privilegio depende de su proyecto y de qué otra cosa esté en su secuencia de comandos de aprovisionador, que podría necesitar privilegios. Uso priveleged false y sudo explícitamente cuando es necesario.

Y en el script de aprovisionamiento:

if ! grep -q "cd /vagrant" ~/.bashrc ; then echo "cd /vagrant" >> ~/.bashrc fi

Esto agregará cd /vagrant a .bashrc, pero solo si ya no está allí. Esto es útil si reprovisionas, ya que evitará que tu .bashrc se sature.

Algunas respuestas mencionan un conflicto con .bash_profile. Si el código anterior no funciona, puede probar la misma línea con .bash_profile o .profile lugar de .bashrc . Sin embargo, he estado usando vagabundo con los invitados de Ubuntu. Mi Laravel / Homestead Box basado en Ubuntu tiene un .bash_profile y un .profile pero tener cd /vagrant en .bashrc me funcionó cuando vagrant ssh sin cambiar o eliminar los otros archivos.

Entonces, tengo un montón de máquinas virtuales vagabundas que ejecutan cierto sabor de Linux (centos, ubuntu, lo que sea). Me gustaría asegurar automáticamente que un "vagabundo ssh" también "cd / vagabundo" para que nadie tenga que acordarse de hacerlo cada vez que inicie sesión.

He descubierto (¡duh!) Que el echo "/n/ncd /vagrant" >> /home/vagrant/.bashrc hará el truco. Lo que no sé es cómo garantizar que esto solo ocurra si el comando cd no está ya allí. No soy un experto en shell, así que estoy completamente confundido aquí. :)


Puede agregar cd /vagrant a su .bashrc y ejecutará el comando cuando haga ssh. El /bashrc que desea está en /home/vagrant (el usuario al que inicia sesión como cuando vagrant ssh ). Puede simplemente pegar la nueva línea en la parte inferior del archivo.


Puede ser que esto pueda ayudar. Edite el Vagrantfile y reemplace su nombre de usuario con vagrant

` config.vm.provision "shell" do |s| s.inline = <<-SHELL # Change directory automatically on ssh login if ! grep -qF "cd /home/vagrant/ansible" /home/vagrant/.bashrc ; then echo "cd /home/vagrant/ansible" >> /home/vagrant/.bashrc ; fi chown vagrant. /home/vagrant/.bashrc `


pongo

echo "cd /vagrant_projects/my-project" >> /home/vagrant/.bashrc

en mi provision.sh , y funciona como un encanto.


cd es un shell Bash incorporado, siempre que se instale un shell debería estar allí.

Además, tenga en cuenta que ~/.bash_profile es para el shell de inicio de sesión interactivo, si agrega cd /vagrant en ~vagrant/.bashrc , es posible que NO funcione.

Porque las distribuciones como Ubuntu NO tienen este archivo -> ~/.bash_profile por defecto y en su lugar usan ~/.bashrc y ~/.profile

Si alguien crea un ~/.bash_profile para un usuario vago en Ubuntu, ~vagrant/.bashrc no será leído.