/etc/profile.d의 파일에 의해 생성된 별칭을 덮어쓰는 것은 무엇입니까? (환경 변수)

/etc/profile.d의 파일에 의해 생성된 별칭을 덮어쓰는 것은 무엇입니까? (환경 변수)

CentOS 7.9에서 별칭 파일을 생성하기 위해 다음 명령을 실행했습니다.

echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/alias-ll.sh

그런 다음 쉘을 다시 시작하면 "ll 입력"이 이 별칭이 작동하지 않음을 나타냅니다. /etc/profile.d의 다른 파일이 별칭을 덮어쓰기 때문일 수 있다고 생각하여 파일 이름을 "z-alias-ll.sh"로 바꿨습니다. 그런 다음 쉘을 다시 시작했고 이번에는 "ll 유형"을 입력하면 별칭이 성공적으로 작동했음을 나타냅니다.

그러나 Ubuntu 20.04에서 동일한 작업을 수행하면 "type ll"이 작동하지 않음을 나타냅니다. Ubuntu의 /etc/profile.d에 "Z99-cloud-locale-test.sh" 및 "Z99-cloudinit-warnings.sh"와 같은 파일 이름이 있으므로 다음을 시도했습니다.

echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/ZZ99-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99-z-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/ZZ99-z-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99Zalias-ll.sh

그러나 터미널을 다시 시작해도 "type ll"은 여전히 ​​"ll은 `ls -alF'에 대한 별칭입니다"라고 표시됩니다.

다른 별칭 파일을 만드는 경우:

echo 'alias lltest="ls -alhF --color=auto"' > /etc/profile.d/alias-lltest.sh

그런 다음 터미널을 다시 시작한 후 "type lltest"는 이 파일이 소스로 제공되고 있음을 나타냅니다. 따라서 /etc/profile.d의 별칭 파일이 소스로 제공되고 있지만 "ll"에 대한 별칭이 어딘가에 덮어쓰여지고 있는 것 같습니다.

"ZZ99" 등의 접두사를 시도한 이후로 CentOS 7.9에서와 같이 다른 /etc/profile.d 파일을 방지하기 위해 파일 이름에 "z-" 접두사를 추가해야 했던 문자열 정렬 문제는 아닌 것 같습니다. 우선순위부터. 하지만 100% 확신할 수는 없습니다.

/etc/profile.d에 생성한 별칭 파일보다 우선할 수 있는 파일, 스크립트 등은 무엇입니까? 환경 변수 정의 측면에서 Ubuntu의 /etc/profile.d보다 우선하는 것은 무엇입니까?

저는 새로운 Digital Ocean 드롭릿을 사용하여 Ubuntu 20.04와 Ubuntu 22.10을 모두 사용해 보았습니다.

답변1

일반적으로 사용자 설정은 시스템 전체 설정보다 우선합니다. 이는 별칭에도 유효합니다. 사용자 정의 별칭은 시스템 수준에서 정의된 별칭보다 우선합니다. 기본적으로 Ubuntu에서는 alias ll='ls -alF'사용자 .bashrc파일에 정의되어 있으므로 다른 곳에서 설정한 별칭을 재정의합니다.

관련 정보