Перенаправить вывод с помощью `sudo` [duplicate]

Все соединения DUN можно найти в /etc/NetworkManager/system-connections Выберите ваш выбор или удалите все из них.

Команда для удаления соединения:

sudo rm /etc/NetworkManager/system-connections/name-of-connection [ ! d2]

В качестве альтернативы вы можете удалить все, используя следующую команду:

sudo rm /etc/NetworkManager/system-connections/*

Всего лишь совет, он удалит любые соединения wi-fi или ethernet тоже.

Если это не удаляет записи, попробуйте отключить, а затем включите сеть, нажав «Включить сетевое взаимодействие».

1
задан 25 April 2014 в 16:08

2 ответа

Одно из решений заключается в использовании:

sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

, но этот не наследует свойства env от родительской оболочки, поэтому вы не можете использовать его, например, с echo $PATH, чтобы получить тот же результат в вашей родительской оболочке (конечно, только в том случае, если вы измените свойство пути).

Использование sudo -E сохранит переменные среды.

Кроме того, согласно https://wiki.ubuntu.com/DashAsBinSh, вам будет лучше использовать sh (который является символической ссылкой на dash), вместо того, чтобы ссылаться на это с помощью bash.

Итак, вы можете переписать это как:

sudo -E sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
8
ответ дан 25 May 2018 в 23:35
  • 1
    Вам не нужно bash для этой работы, вам лучше использовать sh (символическая ссылка на тире). См. wiki.ubuntu.com/DashAsBinSh для различий между ними. – Lekensteyn 8 January 2011 в 15:00
  • 2
    Использование "sudo -E" будет сохранять переменные среды. – João Pinto 8 January 2011 в 15:29
  • 3
    @Lekensteyn. Вы правы, сделаете это для этой команды, но иногда команда, которую пользователь запускает, ведет себя по-другому из-за дополнительной функциональности bash. Я думаю, что разумно рекомендовать bash для пользователей, которые не знают о различиях. Связанная документация делает not say sh следует использовать вместо bash для интерактивных целей. – Eliah Kagan 8 February 2013 в 21:42
  • 4
    @EliahKagan. С какой командой вы столкнулись с ошибкой при использовании sh -c вместо bash -c? Конечно, bash имеет функции, которые несовместимы с тире (например, некоторые формы расширения переменных или скобки), но в большинстве случаев у вас будет самое простое перенаправление. Я не рекомендую sh для интерактивных целей (вход / ответ), для этого лучше подходит bash. – Lekensteyn 8 February 2013 в 22:00

Я обычно использую трюк sudo bash -c, или просто сделаю sudo -s первым, чтобы остаться в корне, а затем запустите команду перенаправления.

Причина, по которой это не работает, заключается в том, что оболочка сначала обрабатывает перенаправление, затем запускает sudo. Поскольку ваша оболочка не имеет доступа к файлу, перенаправление не работает.

6
ответ дан 25 May 2018 в 23:35

Другие вопросы по тегам:

Похожие вопросы: