Я завершил установку программы, и на некоторых веб-сайтах мне предлагают использовать команду echo для экспорта переменной окружения в файл .bashrc, в то время как другие предлагают использовать vi .bashrc для непосредственного редактирования файла. Мне было интересно, какие различия между методами заставят меня использовать один по сравнению с другим в каждом конкретном случае? Я не уверен, что использование echo вставляет временную переменную, а vi может сделать ее постоянной?
vi
- это редактор. Он делает то, что обычно делают редакторы: Вы можете изменять файл в произвольных местах, перемещая для этого курсор.
Изменение файла с помощью echo
всегда добавляет текст в конец файла; или полностью перезаписывает его. Изменения так же постоянны, как и при использовании редактора типа vi
.
echo "foo" >.bashrc
Это заменяет весь файл одной строкой "foo". Вероятно, вам это не нужно.
echo "foo" >>.bashrc
Это добавляет новую строку "foo" в конец файла .bashrc. Хотя иногда это может быть полезно, обычно вам нужно больше контроля над тем, куда попадают ваши изменения, поэтому лучше использовать редактор.
И именно shell делает всю эту магию: >
перенаправляет вывод команды в файл, перезаписывая при этом любое старое содержимое файла; >>
аналогичен, но он не перезаписывает старое содержимое, а только добавляет новое в конец.
В учебниках обычно используется echo
, потому что это очень простая команда, которая просто - вы, наверное, догадались - передает свои аргументы. Но это перенаправление ввода/вывода с помощью >
или >>
работает с любой командой, которая записывает вывод в стандартный канал вывода (он же stdio).