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

Я запускаю эту команду zsh в моем терминале:

cd /path/to/backups/pod3 && rm -rf ./*(Om[1,-10]) 

Это отлично работает и удаляет соответствующие каталоги, как ожидалось.

Однако, когда я помещаю это в скрипт, я получаю эту ошибку:

 syntax error near unexpected token `(' 

Я сделал некоторые исследования, и мне кажется, мне нужно установить это в моем сценарии оболочки:

 setopt extended_glob 

Однако после того, как я добавлю эту строку в начало скрипта, она выдает собственную ошибку.

 setopt: command not found 

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

One Solution collect form web for “Команда ZSH запускается в оболочке, но не в скрипте”

Вам нужно добавить привязку к вашему скрипту, чтобы сообщить системе, что сценарий должен интерпретироваться zsh , поскольку в противном случае это будет интерпретироваться sh вместо:

 #! /bin/zsh - cd /path/to/backups/pod3 && rm -rf ./*(Om[1,-10]) 

Измените /bin/zsh на фактический путь исполняемого файла zsh или измените всю строку she-bang на:

 #! /usr/bin/env zsh 

для пути zsh в $PATH (если команда env находится в /usr/bin что имеет место в большинстве систем).

  • Как правильно собрать массив строк в zsh
  • Показать путь из корня проекта в ZSH Prompt
  • Сценарий Shell / Bash: Правильно отказаться от привилегий
  • Что такое glob, который соответствует всем ~ / xy *, за исключением ~ / xyz *?
  • Проблема в активации среды на сервере UAT
  • Как удалить каждый файл с x в заголовке?
  • Разбор JSON на оболочке
  • Измените zsh-завершение, чтобы выполнить доработки над подсказкой
  • Исключение имени каталога в рекурсивном глобусе zsh
  • Подсчет файлов в листах дерева каталогов
  • Как получить полное завершение в диалоговом окне запуска приложения?
  • Linux и Unix - лучшая ОС в мире.