我尝试使用某些别名来配置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
答案 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?