Bash 매뉴얼에 따르면
대체 텍스트의 첫 번째 단어에 별칭이 있는지 테스트하지만확장되는 별칭과 동일2차 확장은 없을 예정입니다. 예를 들어 별칭을 지정할
ls
수ls -F
있으며 Bash는 대체 텍스트를 재귀적으로 확장하려고 시도하지 않습니다.
참조에서 "same" 다음에 나오는 별칭을 찾으려고합니다.
동일한 별칭을 사용하여 재귀 시퀀스로 확장된 별칭을 확장하거나
확장된 별칭을 먼저 시작하거나
확장을 시작할 마지막 별칭입니다.
그래서 예시를 만들어 봤습니다
$ alias a1=a2;
$ alias a2=a3;
$ alias a3=a4;
a1
다음과 같은 경우 별칭 확장 결과를 확인하고 싶습니다.
$ alias a4=a1;
또는
$ alias a4=a2;
또는
$ alias a4=a3;
쉘이 별칭 확장을 더 수행하지 않고 a1
별칭 확장을 수행하여 별칭 확장 결과를 어떻게 확인할 수 있습니까 ?a1
답변1
매뉴얼에 따르면 쉘은 별칭 확장의 재귀로 인해 발생할 수 있는 루프를 피할 것이라고 나와 있습니다.
예( a1=a2=a3=a4
)의 경우 alias a4=a1
루프가 생성됩니다. 그런 다음 a1
(resp. a2
, a3
, )를 수행하면 a4
쉘이 a1
(resp. a2
, a3
, )로 다시 루프되면 별칭이 아닌 (resp. , , ) a4
라는 이름의 명령을 검색합니다 (이렇게 하면 끝없는 순환이 생성됩니다). ).a1
a2
a3
a4
예:
$ a1() { echo Phew, I got out of the loop; }
$ alias a1='echo "(a1)"; a2' a2='echo "(a2)"; a3'
$ alias a3='echo "(a3)"; a4' a4='echo "(a4)"; a1'
$ a1
(a1)
(a2)
(a3)
(a4)
Phew, I got out of the loop
$ a2 # Command a2 does not exist anywhere
(a2)
(a3)
(a4)
(a1)
a2: command not found
답변2
:> alias e="echo "
:> alias text=foo
:> e text
foo
기술적으로 쉘은 별칭 확장보다 한 단계 더 나아갔지만 그럼에도 불구하고 나는 그것이 당신이 의미하는 것이라고 생각합니다.