~/.bashrc
, ~/.bash_profile
, /etc/profile
의 차이점을 알고 있습니다 /etc/bash.bashrc
. 이를 제외하고 /etc/profile
는 쉘 특정 bash
.
어떤 사용자로든 스크립트를 열 때마다 스크립트가 실행되기를 원합니다.로그인하지 않았습니다(대화형 또는 비대화형) 쉘 bash
이지만 sh
. 내 목표는 docker exec ... /bin/sh
Alpine Linux 컨테이너에 들어갈 때마다 실행되는 스크립트를 갖는 것입니다 . 이 컨테이너는 그렇지 않습니다 bash
.
그러한 전역 구성 파일이 있습니까 sh
? 그렇지 않다면 이 동작을 에뮬레이션하는 것이 가능합니까?
답변1
동작은 sh
POSIX에 의해 지정됩니다. Linux 시스템에는 bash, dash, mksh 또는 ash를 포함하되 이에 국한되지 않는 여러 셸이 사용될 수 /bin/sh
있으며 이들 각각에는 이 경우 동작을 구현하기 위한 사용자 정의 메커니즘이 있을 수 있지만 신뢰할 수 있는 유일한 것은 POSIX입니다. 지정됩니다.
sh
환경 변수를 ENV
파일 이름 으로 설정하여 대화형 사용을 위한 구성 파일을 지정합니다 . 또한 POSIX는 비로그인 셸에 대한 표준 문서를 제공하지 않습니다. POSIX 텍스트는 다음과 같습니다.
대화형 쉘이 호출되는 경우에만 이 변수는 쉘에 의해 확장된 매개변수가 되며(매개변수 확장 참조) 결과 값은 현재 환경에서 실행될 쉘 명령이 포함된 파일의 경로 이름으로 사용됩니다. 파일이 실행 가능하지 않아도 됩니다. 확장된 값이
ENV
절대 경로 이름이 아닌 경우 결과는 지정되지 않습니다.ENV
프로세스의 실제 유효 사용자 ID 또는 실제 유효 그룹 ID가 다른 경우 무시됩니다.
비대화형 셸에 대한 명령이 필요한 경우 명령줄에서 해당 명령을 인수로 제공해야 합니다.