如何将别名添加到Vagrant虚拟机的.bashrc文件

5
我正在尝试使用一些别名来配置虚拟机,但始终收到权限被拒绝的消息,想知道正确的做法是什么:
在 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

2
你试过这样吗? echo "alias alias1=\"some command\"" >> ~/.bashrc - balintant
这最终成为了一个CoreOS问题(我认为与其只读文件系统有关,或者类似的问题,我应该在问题中提到它),我最终在我的虚拟机上使用Ubuntu(我只是使用虚拟机来运行Docker),你评论中/我原始问题中的命令最终起作用了。 - dismal
3个回答

2

我认为这是一个CoreOS的问题(可能与其只读文件系统有关),我应该在问题中提到它,最终我使用Ubuntu作为我的虚拟机(我仅使用虚拟机运行Docker),你评论中/我的原始问题中的上述命令最终起作用了。


1

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

你可以用文件副本替换符号链接,然后进行编辑。像这样在provision.sh中进行:

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

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

0

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

- 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

然后从您的vagrant provision文件运行ansible脚本 (sudo ansible-playbook foo.yml)。

或者使用ex将别名附加到文件末尾:

ex -s +':$s@$@\ralias foo=bar@' -cwq /etc/bash.bashrc

另请参阅:如何仅在文件末尾没有该行时附加一些行? 在 Ex 中


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接