如何在vagrant vm .bashrc文件中添加别名

时间:2014-10-03 22:29:36

标签: vagrant virtualbox vagrantfile

我尝试使用某些别名来配置vm并继续拒绝权限,并想知道这样做的正确方法是:

Vagrant文​​件的结尾(这有效):config.vm.provision :shell, :path => "provision.sh"

在provision.sh中:echo "alias alias1=\"some command\"" >> .bashrc

错误:/tmp/vagrant-shell: line 6: .bashrc: Read-only file system

3 个答案:

答案 0 :(得分:2)

这最终成为一个coreOS问题(我认为它与它的只读文件系统或类似的东西,我应该在问题中提到它),我最终使用Ubuntu为我的VM (我只使用VM来运行Docker)并且评论中的上述命令/我的原始问题最终正常运行。

答案 1 :(得分:1)

CoreOS有一些特定的问题,因为默认情况下~/.bashrc符号链接到/usr(只读文件夹)。

您可以将该符号链接替换为该文件的副本,然后进行编辑。 provision.sh中的这类内容可以解决问题:

cp $(readlink .bashrc) .bashrc.new && mv .bashrc.new .bashrc
echo "alias alias1=\"some command\"" >> .bashrc

我无法测试,因为我没有CoreOS盒但它应该可以工作

答案 2 :(得分:0)

如果您正在使用Ansible Playbooks,则可以在yml文件中创建新的任务角色,例如:

,watch: {
  js: {
    files: ['public/js/dev/*.js']
    ,tasks: ['nu']
  }
  ,jade: {
    files: ['views/*.jade', 'views/include/*.jade']
    ,tasks: ['nj']
  }
}

然后从您的vagrant配置文件中运行ansible脚本(- name: Update bashrc to add foo alias for Vagrant user lineinfile: dest=/home/vagrant/.bashrc line="alias foo='bar'" regexp="^alias foo" owner=vagrant state=present insertafter=EOF create=True )。

或者使用sudo ansible-playbook foo.yml将别名附加到文件末尾:

ex

另见:Ex {/ p>中的How to append some line at the end of the file only if it's not there yet?