첫째, 경로는 어떻게 로드됩니까?

첫째, 경로는 어떻게 로드됩니까?

쉘은 bash처음에 경로 및/또는 환경을 어떻게 얻습니까? 파일인가요?

내가 시도한 것은 다음과 같습니다.

  • /etc/paths(분명히 MacOS에 존재하지만 내 Debian 시스템에서는 찾을 수 없습니다)

  • 간단히 로드하세요 $path(내가 하고 있는 작업에 대한 약간의 치트이지만 존재하는 경우 옵션입니다)

  • Google fu(셸을 통해 일반적으로 경로를 수정하고 설정하는 방법에 대한 결과만 가져옴)

답변1

일반적으로 $PATH환경에서 상속되며 쉘 시작 스크립트에 의해 수정될 수 있습니다.

그러나 환경 변수가 설정되지 않은 경우 버전에 따라 달라지는 하드 코딩된 기본값이 있습니다(또는 컴파일 타임에 설정된 구성 옵션일 수도 있음).

실행 중인 OS X 시스템에서bash 3.2.57(1)-release

$ env -i bash --norc --noprofile -c 'echo $PATH'
/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.

데비안에서 실행bash 4.2.37(1)-release

$ env -i bash --norc --noprofile -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

다음을 사용하여 이것이 바이너리에 하드코딩되어 있는지 확인할 수 있습니다.

strings /bin/bash | grep /usr/local/bin

관련 정보