비대화형, 비로그인 쉘에 의해 로드되고 실행되는 파일은 무엇입니까?

비대화형, 비로그인 쉘에 의해 로드되고 실행되는 파일은 무엇입니까?

비로그인 대화형 셸(예: Ubuntu에서 터미널 창을 열 때)이 파일을 로드하고 실행합니다 ~/.bashrc.

이제 쉘 스크립트를 실행하면 쉘 스크립트를 실행하기 위해 비대화형, 비로그인 쉘 프로세스가 생성됩니다.

이 비대화형 비로그인 쉘에 의해 로드되고 실행되는 파일이 있습니까?


편집하다:제가 사용하는 쉘은 bash.

답변1

에서 man bash, 에서비대화형쉘은 BASH_ENV환경 변수를 평가하고 그 내용을 얻습니다. 따라서 이 환경 변수를 사용하여 환경 설정이 포함된 파일을 지정할 수 있습니다.
기본적으로 파일이 소스로 제공되지 않습니다.비대화형모델.

When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV
in  the  environment, expands its value if it appears there, and uses the expanded value as the name of a file 
to read and execute.  Bash behaves as if the following command were executed:
       if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for the filename.

답변2

비대화형 비로그인 쉘을 사용하여 일부 쉘 스크립트를 실행할 때, 특히 다음을 사용하여시스템(3)일부 C 프로그램에서(또는 이를 실행하여)예약된 작업(5)), 어떤 파일도 암시적으로 로드되지 않습니다.

.귀하의 스크립트는 특정 파일을 사용하거나 얻을 수 있습니다source내장 케이스.

어쩌면 당신은 어떤 환경에 관심을 가져야 할지도 모릅니다(참조환경(7)) 또는 무엇을파일 설명자쉘 스크립트가 시작된 방법, 상위 프로세스가 무엇인지 등에 따라 달라집니다. 터미널 창의 셸에서 스크립트를 실행하면 셸(특히 셸)에서 많은 것을 상속받게 됩니다.$PATH). 그러나 스크립트를 다르게 실행하면(일부 init 또는 systemd 스크립트에서 cron또는 batch또는 ....을 통해) nohup상황이 달라질 수 있습니다 .

당신은 또한 볼 수 있습니다데몬(3),터미널(4)....

읽다포크(2),실행(2)(둘 다 쉘에서 사용됨)바우처(7)

관련 장을 읽어보세요배시 시작 파일.

관련 정보