"별칭"과 같은 일부 bash 명령에서 공백이 허용되지 않는 이유는 무엇입니까? [폐쇄]

"별칭"과 같은 일부 bash 명령에서 공백이 허용되지 않는 이유는 무엇입니까? [폐쇄]

등호 옆에 공백이 있으면 bash의 alias 명령이 작동하지 않는다는 것을 알고 있습니다. 예를 들어,

alias loadcode='vim *.c *.h Makefile'

유효하지만

alias loadcode ='vim *.c *.h Makefile'

또는

alias loadcode= 'vim *.c *.h Makefile'

또는

alias loadcode = 'vim *.c *.h Makefile'

작동 안함. 왜 이런거야?

답변1

alias별칭을 쿼리하고 한 번에 여러 별칭을 설정하는 데 사용할 수 있기 때문입니다 .

$ alias foo                       # query for one alias
bash: alias: foo: not found

$ alias foo = bar                 # query for three aliaes
bash: alias: foo: not found
bash: alias: =: not found
bash: alias: bar: not found

$ alias foo=bar doo=dar           # set two aliases
$ alias doo                       # query one alias
alias doo='dar'

$ alias foo = bar                 # query three, again
alias foo='bar'
bash: alias: =: not found
bash: alias: bar: not found

(별칭에 대한 잘못된 이름이라고 말하는 대신 왜 별칭을 찾을 수 없다고 표시되는지 묻지 마십시오 =. 제 생각에는 그 이름에 대한 별칭을 설정하는 방법을 찾을 수 없습니다.)

물론 이는 쉘 변수 할당의 공백이 작동하는 방식과도 일치합니다.

$ foo=bar doo=dar
$ echo "$doo"
dar

답변2

공간명령줄 인수를 분리하는 일반적인 bash 작업을 수행할 수 있습니다.

특히 약 alias...

alias그 안에 포함되지 않은 인수가 주어지면 =별칭은 해당 이름에 대한 기존 별칭을 인쇄하려고 시도합니다.

그러나 alias여기에 매개변수를 제공 =하면 새 별칭이 생성됩니다.

충동을 느끼면 인쇄와 정의를 한 줄로 결합할 수 있습니다.

관련 정보