"bash -c"에서 .bashrc를 로드하는 방법

"bash -c"에서 .bashrc를 로드하는 방법

내 .bashrc에 정의된 함수를 실행하기 위해 "bash -c"를 사용하려고 합니다. 결국 "명령을 찾을 수 없습니다"라는 오류가 발생합니다. 초기화 파일을 로드하기 위해 "bash -c"를 어떻게 얻나요?

답변1

: 을 사용하여 대화형 쉘로 만들 수 있으며 -i그러면 ~/.bashrc가 읽혀집니다.

bash -i -c "echo \$EDITOR"

당신이 할 수 있는 또 다른 일은 파일을 명시적으로 얻는 것입니다. 콘텐츠 가 있는 경우 /var/tmp/test:

export XXX=123

너도 마찬가지야

bash -c "source /var/tmp/test; echo \$XXX"

123응답을 받게 될 것입니다 .

답변2

$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 com‐
   mand were executed:
          if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
   but the value of the PATH variable is not used to search for  the  file
   name.

따라서 다음과 같이 할 수 있습니다.

BASH_ENV=~/.bashrc && bash -c 'your_function'

관련 정보