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.