Как выполнить встроенную команду оболочки с помощью find?

Я вынужден делать это в tcsh на CentOS из-за окружающей среды на работе. При выполнении find . -type f -executable -exec source '{}' \; find . -type f -executable -exec source '{}' \; единственным результатом является find: 'source': No such file or directory для каждого соответствующего файла. Не уверен, почему это не работает в tcsh, так как это довольно просто. Что я делаю не так? Любая помощь очень ценится.

2 Solutions collect form web for “Как выполнить встроенную команду оболочки с помощью find?”

source – встроенная оболочка. find выполняет команды. Он не может выполнить встроенную оболочку.

Если вы хотите выполнять внешние программы, просто укажите имя программы:

 find . -type f -executable -exec '{}' \; 

Если это все сценарии csh, в которых отсутствует сибанг ( #!/bin/env csh в качестве первой строки), добавьте строку shebang. Если вы действительно не можете добавить строку shebang, вызовите csh явно:

 find . -type f -executable -exec tcsh '{}' \; 

Если это все фрагменты скрипта csh, которые вы хотите выполнить внутри текущей оболочки, вы не можете сделать это таким образом. Вам нужно будет собрать имена с помощью find а затем исправить их.

 foreach fragment ("`find . -type f -executable -print`") source "$fragment" end 

Во-первых, в этом есть что-то подозрительное. Осколки оболочки, предназначенные для источников, не должны быть исполняемыми.

Видеть это:

 127:2:1389633116:user@host:~$ tcsh source foo source: No such file or directory. 1:3:1389633119:user@host:~$ tcsh host:~> source foo foo: No such file or directory. host:~> exit 0:4:1389633582:user@host:~$ tcsh -c 'source foo' foo: No such file or directory. 

Попробуйте сами и другие. Возможно, проверять следы strace . Наконец, попытайтесь воспользоваться и построить обходной путь.

  • Создать список каталогов
  • вызов сценария из perl / python / ruby ​​и получение вывода
  • Могу ли я увидеть в истории вывод, из какой директории я действительно выдал команду?
  • Вопросы по завершению tcsh
  • Различные оболочки для интерактивной и неинтерактивной работы
  • Заменить имя файла с именем папки (csh)
  • Переименование файлов дает странный результат в tcsh
  • Синтаксическая ошибка: неожиданный конец файла
  • Как исключить некоторые команды из хранилища в истории TCSH?
  • Как сделать мой Linux tcsh ярким?
  • Преобразование содержимого файла в нижний регистр
  • Interesting Posts

    Как мы можем создать несколько фиктивных интерфейсов в Linux?

    USB-флеш-накопитель с жестко закодированным разделом

    Как подключиться через sftp к нестандартному порту на Midnight Commander?

    scp с использованием ssh-туннелирования

    Unix-скрипты – для команды do с &

    Как сделать автоматическое измерение времени загрузки для свежих изображений?

    Как спасти установку lvm ​​/ luks из пользовательской установки

    каковы методы безопасного извлечения файлов?

    Как установить программное обеспечение в redhat 7.2 с помощью загруженных rpm?

    Проблема пунктуации с использованием grep для получения n слов вокруг токена

    Сопоставьте точную строку с помощью grep

    Простой эмулятор терминала (с возможностью записи) с меткой-копией с «универсальным» $ TERM

    Как сообщить журналисту перечитать его конфигурацию?

    Псевдоним, принимающий переменные из результата оценки

    Как следует сформулировать запись в fstab для файла подкачки, который не находится на основном диске?

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