Отменить все переменные ENV, соответствующие _PROXY

Я пытаюсь отключить все переменные среды, которые соответствуют _PROXY :

 env | grep -i _proxy | column -t -s '=' | awk '{ print $1 }' | grep -iv 'no_proxy' | xargs -0 -I variable unset variable 

но он не работает с xargs: unset: No such file or directory .

Однако, если я попытаюсь изменить unset echo , все, похоже, работает так, как ожидалось: я получаю список переменных, которые установлены.

 env | grep -i _proxy | column -t -s '=' | awk '{ print $1 }' | grep -iv 'no_proxy' | xargs -0 -I variable echo variable http_proxy ftp_proxy FTP_PROXY https_proxy HTTPS_PROXY HTTP_PROXY 

Что, кажется, идет не так? (Если у вас есть альтернативная стратегия для достижения цели, я заинтересован, но я больше всего хотел бы знать, почему это не удается.)

Кроме того, я использую OS X, если это имеет значение.

  • Как подключить вывод поиска к другому вызову find
  • Как создать несколько файлов tar с помощью сценария bash и использовать дату в качестве имен файлов?
  • Получить имя файла после find -name | xargs
  • Отправка списка (текстового файла) файлов и путей в xargs
  • xargs не запрашивает после каждой строки
  • xargs с перенаправлением stdin / stdout
  • Правильный синтаксис для использования awk в сочетании с другой командой внутри xargs sh -c
  • Формат вывода xargs
  • One Solution collect form web for “Отменить все переменные ENV, соответствующие _PROXY”

    Это потому, что unset – это встроенная оболочка, а не внешняя команда. Это означает, что xargs не могут использовать его, так как это только запускает команды, которые находятся в вашем $PATH . У вас будет такая же проблема, если вы попытаетесь использовать cd :

     $ ls -l total 4 drwxr-xr-x 2 terdon terdon 4096 Jun 16 02:02 foo $ echo foo | xargs cd xargs: cd: No such file or directory 

    Один из способов – использовать цикл оболочки, который, поскольку он является частью оболочки, сможет запускать встроенные оболочки. Я также немного упростил вашу команду, нет необходимости в column , вы можете установить разделитель полей для awk и нет необходимости в втором grep , просто скажите awk для печати строк, которые не соответствуют no_proxy :

     while read var; do unset $var; done < <(env | grep -i proxy | awk -F= '!/no_proxy/{print $1}') 
    Interesting Posts

    Как скрывать меню загрузки grub, если не нажимать shift?

    Ключ, отличный от Control для отправки SIG *?

    Поиск и удаление дубликатов файлов с разными именами

    Syslog TLS Сжатие и буферизация сообщений

    Это временная метка Unix?

    Конфигурация Thunderbird для патчей ядра – не может найти ключ регистра

    Как написать скрипт crontab, который будет проверять статус процесса и запускать его, если он не работает?

    Получение IP-адреса веб-сайта с помощью «хоста»?

    Как установить Ubuntu с USB-ключа с помощью syslinux?

    Есть ли способ понять, почему требуется определенная зависимость пакета?

    Обнаружение тайм-аута SSH

    Восстановить текстовые файлы и структуру каталогов из базы данных, созданной Recoll?

    Почему вызов системы waitpid может использоваться только с дочерними процессами?

    Каковы ваши лучшие практики и планы на будущее для развертывания операционных систем unixoid?

    Установка PCRE 8+ на SLES SP3

    Linux и Unix - лучшая ОС в мире.