내 .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'