だから、私はLinuxのいくつかのフレーバー(centos、ubuntuなど)を実行する多くのvagrant VMを持っています。 「vagrant ssh」が「cd/vagrant」にもなるように自動的に確保したいので、誰もがログインするたびにそのことを覚えておく必要はありません。
私はそれを理解しました(そうです!)echo "\n\ncd /vagrant" >> /home/vagrant/.bashrc
トリックを行います。私が知らないのは、これがcdコマンドがまだない場合にのみ発生するようにする方法です。私はシェルの専門家ではないので、ここでは完全に混乱しています。 :)
cd
はBashシェルの組み込みであり、シェルがインストールされていれば、そこにあるはずです。
また、~/.bash_profile
はインタラクティブログインシェル用であり、cd /vagrant
に~vagrant/.bashrc
を追加した場合、機能しない可能性があることに注意してください。
Ubuntuのようなディストリビューションにはこのファイルがありません-> ~/.bash_profile
がデフォルトであり、代わりに~/.bashrc
と~/.profile
を使用します
Ubuntuでvagrantユーザー用に~/.bash_profile
を作成した場合、~vagrant/.bashrc
は読み取られません。
置いた
echo "cd /vagrant_projects/my-project" >> /home/vagrant/.bashrc
私のprovision.sh
、それは魅力のように動作します。
VMの.bashrcにcd /vagrant
を追加する必要があります。これを行う最良の方法は、プロビジョニングスクリプトにあります。
プロビジョニングスクリプトがない場合は、end
の前にVagrantfileに次の行を追加して、スクリプトを作成します。
config.vm.provision "Shell", path: "scripts/vagrant/provisioner.sh", privileged: false
パスは、Vagrantfileがあるプロジェクトルートからの相対パスであり、特権は、プロジェクトと、特権を必要とする可能性があるプロビジョニングスクリプト内の他の内容によって異なります。必要に応じて、特権のあるfalseとSudoを明示的に使用します。
そして、プロビジョナースクリプトで:
if ! grep -q "cd /vagrant" ~/.bashrc ; then
echo "cd /vagrant" >> ~/.bashrc
fi
これにより、cd /vagrant
が.bashrcに追加されます(ただし、まだ存在しない場合のみ)。これは、.bashrcが乱雑になるのを防ぐため、再プロビジョニングする場合に役立ちます。
一部の回答では、.bash_profileとの競合について言及しています。上記のコードが機能しない場合は、.bash_profile
の代わりに.profile
または.bashrc
を使用して同じ行を試すことができます。しかし、私はubuntuゲストでvagrantを使用しています。 Ubuntuに基づく私のLaravel/Homesteadボックスには.bash_profile
と.profile
がありますが、cd /vagrant
に.bashrc
があるdidvagrant ssh
他のファイルを変更または削除せずに。
config.ssh.extra_args
Vagrantfileの設定:
config.ssh.extra_args = ["-t", "cd /vagrant; bash --login"]
その後、いつでもvagrant ssh
あなたは/vagrant
ディレクトリ。
あなたは付け加えられます cd /vagrant
から.bashrc
し、sshするとコマンドが実行されます。 /bashrc
あなたが欲しい/home/vagrant
(あなたがログインしたときのユーザーvagrant ssh
。)新しい行をファイルの下部に貼り付けることができます。
次のようにすることもできます:
vagrant ssh -c "cd /vagrant && bash"
そして、それを起動するスクリプトに含めることができます(./vagrant-ssh
など)。
これが役立つかもしれません。ユーザー名を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
`
理想的には、浮浪者のsshの動作を変更したいだけです。
私の場合、環境内の他のプロセスに影響を及ぼさない何かが欲しかったので、このようなことをvagrantファイルで行うことができます-
VAGRANT_COMMAND = ARGV[0]
if VAGRANT_COMMAND == "ssh"
config.ssh.extra_args = ["-t", "cd /vagrant; bash --login"]
end