ZSH 명령은 셸에서 실행되지만 스크립트에서는 실행되지 않습니다.

ZSH 명령은 셸에서 실행되지만 스크립트에서는 실행되지 않습니다.

터미널에서 이 zsh link 명령을 실행합니다.

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

이것은 잘 작동하고 예상대로 해당 디렉토리를 삭제합니다.

그러나 스크립트에 넣으면 다음과 같은 오류가 발생합니다.

syntax error near unexpected token `('

몇 가지 조사를 해본 결과 쉘 스크립트에서 이를 설정해야 할 것 같습니다.

setopt extended_glob

그러나 스크립트 상단에 해당 줄을 추가하면 자체 오류가 발생합니다.

setopt: command not found

그래서 여기서 내가 뭘 잘못하고 있는지, 어떻게 해결해야 할지 잘 모르겠습니다.

답변1

스크립트가 에 의해 해석되어야 함을 시스템에 알리려면 스크립트에 she-bang을 추가해야 합니다 . 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).

관련 정보