명령 매개변수의 별칭 해석 관련 문제

명령 매개변수의 별칭 해석 관련 문제

다음과 같은 별칭이 있습니다.

alias mv='mv -i'
alias git='LANG=en_US \git '

git mv그런 다음 명령을 실행하면 mv다음과 같이 해석됩니다 mv -i.

$ git mv a b
error: unknown switch `i'

bash 명령인 경우에만 별칭을 적용하고 싶습니다.

버전:

  • 우분투 16.04.3 LTS
  • GNU 배시, 버전 4.3.48(1)
  • git 버전 2.7.4 (git과도 연결되어 있지 않은 것 같습니다)

노트:

  • git \mv a b일하다
  • 앨리어싱 git을 취소하는 것도 가능합니다\git mv a b

답변1

git별칭 이니까공백으로 끝나다, bash는 다음 단어에 대해 별칭 확장을 수행합니다.

$ alias mv='mv -i'
$ alias git=': git '
$ set -x
$ git mv
+ : git mv -i

~에서문서:

별칭 값의 마지막 문자가 비어 있으면 별칭 뒤의 다음 명령 단어에서도 별칭 확장이 확인됩니다.

git공백 없이 별칭을 만듭니다 .

alias git='LANG=en_US git'

알아채다:

대체 텍스트의 첫 번째 단어는 별칭이 있는지 테스트되지만 확장되는 단어와 동일한 별칭을 가진 단어는 다시 확장되지 않습니다. 예를 들어 별칭을 지정할 lsls -F있으며 Bash는 대체 텍스트를 재귀적으로 확장하려고 시도하지 않습니다.

\git그러니 거기 있을 필요는 없습니다 .

관련 정보