2014-10-03 2 views
3

Я пытаюсь предоставление виртуальной машины с некоторым псевдонимом и продолжать получать permision отказано, задаваясь вопросом, что правильный способ сделать это:как добавить псевдонимы бродячие VM .bashrc файл

конец Бродячей файла (это работы): 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

+1

Вы пробовали это так? 'echo 'alias alias1 = \" some command \ "" >> ~/.bashrc' – balintant

+0

Это оказалось проблемой CoreOS (я думаю, что это связано с файловой системой только для чтения или что-то в этом роде, я должен был бы упомянул об этом в вопросе), я закончил использование Ubuntu для своей виртуальной машины (я использую только VM для запуска Docker), и приведенная выше команда в вашем комментарии/мой исходный вопрос закончился. – dismal

ответ

1

это закончилось тем, что вопрос coreOS (я думаю, что он должен делать с это только для чтения файловой системы или что-то подобное, Я ould упомянул об этом в вопросе), я закончил использование Ubuntu для своей виртуальной машины (я использую только VM для запуска Docker), и приведенная выше команда в вашем комментарии/мой исходный вопрос закончился.

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 

затем запустить анзибль скрипт (sudo ansible-playbook foo.yml) из вашего файла бродячего обеспечения.

В качестве альтернативы использовать ex для добавления псевдонима к концу файла:

ex -s +':[email protected][email protected]\ralias [email protected]' -cwq /etc/bash.bashrc 

Смотрите также: How to append some line at the end of the file only if it's not there yet? в Ex

1

CoreOS имеет некоторый конкретный вопрос о том, как по умолчанию ~/.bashrc является ссылкой на /usr (только для чтения).

Вы можете заменить символическую ссылку на копию файла и затем внести изменения. Нечто подобное в вашем provision.sh будет делать трюк:

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

я не могу проверить, как у меня нет CoreOS ящик, но он должен работать

Смежные вопросы