Автоматически chdir в бродячий каталог на "бродяжничестве ssh"
Итак, у меня есть куча бродячих виртуальных машин с некоторым вкусом Linux (centos, ubuntu, что угодно). Я хотел бы автоматически гарантировать, что "бродячий ssh" также будет "cd/vagrant", так что никто не должен помнить об этом, когда они войдут в систему.
Я выяснил (duh!), что echo "\n\ncd /vagrant" >> /home/vagrant/.bashrc
сделает трюк. Я не знаю, как это сделать, если команда cd еще не существует. Я не эксперт по оболочке, поэтому я совершенно смущен.:)
Ответы
Ответ 1
cd
является встроенной оболочкой Bash, если установлена оболочка, она должна быть там.
Кроме того, имейте в виду, что ~/.bash_profile
для интерактивной оболочки входа, если вы добавили cd /vagrant
в ~vagrant/.bashrc
, он НЕ МОЖЕТ РАБОТАТЬ.
Так как у дистрибутивов, таких как Ubuntu, этот файл не имеет → ~/.bash_profile
по умолчанию и вместо этого используйте ~/.bashrc
и ~/.profile
Если кто-то создает ~/.bash_profile
для бродячего пользователя в Ubuntu, ~vagrant/.bashrc
не будет считаться.
Ответ 2
Я положил
echo "cd /vagrant_projects/my-project" >> /home/vagrant/.bashrc
в моем provision.sh
, и он работает как шарм.
Ответ 3
Вы можете добавить cd /vagrant
к вашему .bashrc
, и он будет запускать команду, когда вы ssh. /bashrc
вы хотите в /home/vagrant
(пользователь, которого вы входите в систему, как при vagrant ssh
.) Вы можете просто вставить новую строку в нижней части файла.
Ответ 4
Может быть, это может помочь. Отредактируйте Vagrantfile
, замените свое имя пользователя 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
`