셸의 별칭을 셸에서 실행되는 스크립트로 어떻게 전달합니까? [복사]

셸의 별칭을 셸에서 실행되는 스크립트로 어떻게 전달합니까? [복사]
$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

쉘에서 스크립트로 별칭을 전달하는 방법을 알고 싶습니다. 감사해요.

$ cat myscript 
#!/bin/bash
alias

$ ./myscript 
$

답변1

별칭으로 인해 스크립트가 예기치 않게 동작할 수 있으므로 스크립트를 시작하기 전에 별칭을 의도적으로 지웁니다.

이론적으로는 스크립트 내에서 별칭을 정의할 수 있지만 그러한 스크립트가 전달되는 경우

. scriptname

도트 스크립트는 실행 전에 완전히 구문 분석되므로 이러한 새 별칭은 스크립트 내에서 허용되지 않습니다. 별칭이 유효하려면 파서가 이에 대해 알아야 하며 파서가 별칭에 대해 알기 위해서는 먼저 다음이 필요합니다. alias쉘 내장을 실행합니다 .

따라서 스크립트에 별칭을 사용하지 마십시오. 입력을 더 쉽게 할 수 있지만 한 번 작성되었지만 여러 번 실행되는 스크립트에는 작동하지 않습니다.

관련 정보