명령을 통해 zsh에서 다음 스크립트를 실행하려고 하면 /bin/zsh ~/.set_color_scheme.sh
다음 오류가 발생합니다.
command not found: ^M
스크립트에는 u+x
권한이 있으며 zsh도 있는 다른 시스템에서 실행하는 데 사용되었습니다. 어떤 단서가 있나요?
노트:이 질문은 다음과 관련이 있습니다.이것은 또 다른 질문입니다(스크립트를 조정하려고합니다 tcsh
)
#!/bin/zsh
# Contents of set_color_scheme.sh
export LS_COLORS=$( \
( grep '\w' | grep -v '^#' | sed 's/#.\+//' | perl -lane 'printf "%s=%s:", shift @F, join ";", @F;' ) <<< "
# HUMAN_FORMATTED_DATA
# list one per line
# these are basic filesystem items
no 00 # normal
fi 00 # file
di 01 34 # directory
ln 00 36 # link
pi 40 33 # pipe
so 00 35 #
bd 40 33 01
cd 40 33 01
or 01 05 37 41
mi 01 05 37 41
ex 00 91 # executable
ow 01 34 # other writables
*.cmd 00 32
*.exe 00 32
# archive, compressed things etc
*.gz 00 90
*.bz2 00 90
*.bz 00 90
*.tz 00 90
*.rpm 00 90
*.rar 00 90
*.zip 00 90
*.iso 00 90
*.cpio 00 31
# perl & CODE
*.c 33
*.h 33
*.sh 33
*.t 33
*.pm 33
*.pl 33
*.cgi 33
*.pod 33
*.PL 33
*.js 33
*.php 33
#*.xs
# strikethrough
*.off 00 9
*.bak 00 9
*.old 00 9
# documents misc, html webstuff
# really TEXT
*.htm 94
*.html 94
*.txt 94
*.text 94
*.css 94
# MOVIE
*.avi 96
*.wmv 96
*.mpeg 96
*.mpg 96
*.mov 96
*.AVI 96
*.WMV 96
*.mkv 96
# images & pdf
*.jpg 96
*.jpeg 96
*.png 96
*.xcf 96
*.JPG 96
*.gif 96
*.svg 96
*.eps 00 96
*.pdf 00 96
*.PDF 00 96
*.ps 00 96
*.ai 00 91 # adobe ill
*.doc 00 91 # msword
# data, such as .db, .csv
*.csv 95
*.dsv 95
*.db 95
*.sql 95
*.meta 95
# CONFS
*.xml 95
*.yaml 95
*.yml 95
*.conf 95
# [a-z0-9]*rc
")
답변1
쉘 스크립트는 DOS/Windows 텍스트 형식입니다(CR+LF 사용). Unix 형식으로 변환합니다(예: dos2unix 사용).
그러나 연결된 질문에 명시된 대로 원하는 방식으로 작동하지 않습니다. 새 셸을 실행하고 설정된 변수를 설정한 다음 변수를 가져오면서 셸이 종료됩니다.
실행 중인 스크립트와 동일한 셸을 사용하는(또는 호환 가능한 구문이 있는) 스크립트가 있는 경우 .
또는 를 사용하여 스크립트를 실행할 수 있습니다 source
. 이렇게 하면 모든 것을 직접 입력한 것처럼 스크립트가 실행되므로 모든 변수가 보존됩니다(그리고 #! 행은 무시됩니다).