На этот вопрос уже есть ответ здесь:
Для сценариев bash ubuntu 12.04 я мог запускать команды, подобные приведенному ниже, для перезаписи файлов:
sudo echo 'line1
line2
line3' > /etc/some/config/file.conf
Начиная с Ubuntu 14.04, теперь мне нужно разбить его, чтобы получить такое же поведение, например:
sudo echo 'line1
line2
line3' | sudo tee /etc/some/config/file.conf
Полагаю, это дополнительная мера безопасности? Есть ли способ вернуться к старому поведению?
ОБНОВЛЕНИЕ
Как некоторые правильно заметили, такое поведение согласуется с Ubuntu 12.04 и Ubuntu 14.04. Я полагаю, что я запутался, но поскольку , если кто-то запускает команду в сценарии bash, вызываемом с помощью sudo, он выполняется нормально, однако, вставка команды в CLI приводит к отказу в разрешении . Я сравнивал яблоки с апельсинами.
Вы не можете непосредственно использовать >
с sudo
путем Вы делаете его, причиной является перенаправление, выполняется оболочкой а не sudo, и следовательно команда не запишет в файл из-за полномочий.
Обратитесь к этому вопросу для соответствующих решений для этого:
Обновление:
В случае, если Вы копируете:
sudo echo 'line1
line2
line3' > /etc/some/config/file.conf
в файл сказать scrip.sh
, и затем выполните сценарий как
sudo bash script.sh
Вы не получите ошибку, и сценарий выполнится успешно, потому что в этом случае, Вы запускаете скрипт путем предоставления оболочке соответствующие полномочия (sudo bash
).