Bash 스크립트의 심볼릭 링크는 별칭을 "볼" 수 없습니다.

Bash 스크립트의 심볼릭 링크는 별칭을 "볼" 수 없습니다.

Symlink를 통해 액세스할 때 bash 스크립트가 인수를 처리하는 방법의 미묘함을 이해하는 데 어려움을 겪고 있습니다. 이 문제는 명령과 출력을 통해 가장 쉽게 설명됩니다.

$ type ll
ll is aliased to `ls -Alt --color=auto'

$ cat myshellscript
#!/bin/bash
type $1

$ ls -l myshellscript
-rwxr-xr-x 1 pi pi 20 Aug 22 19:55 myshellscript

$ . myshellscript ll
ll is aliased to `ls -Alt --color=auto'

$ ls -l /usr/local/bin
total 0
lrwxrwxrwx 1 root root 21 Aug 22 19:56 mss -> /home/pi/sh/myshellscript

$ mss ls
ls is /bin/ls

$ echo "OK, that worked"
OK, that worked

$ mss ll
/usr/local/bin/st: line 2: type: ll: not found

$ echo "Why didn't that work?"
Why didn't that work?

답변1

기본적으로 별칭 확장은 스크립트 내에서 비활성화되어 있습니다. 예를 참조하세요.

당신이 실행할 때

. myshellscript ll

당신은 단지 달리고 있는 것이 아닙니다 myshellscript.구입별칭이 있는 현재(대화형) 쉘로 들어갑니다.크게 하는. 대조적으로, 당신이 달릴 때

mss ls

스크립트를 실행하면 예상대로 별칭 확장이 발생하지 않습니다. 대신 실행하면 ./myshellscript ll동일한 결과가 표시됩니다 .. myshellscript ll

관련 정보