
환경을 설정하기 위해 일부 명령을 실행한 다음 사용자에게 프롬프트를 표시하는 bash 함수를 작성 중입니다.
나는 뛸 수 있습니다
bash -c 'ls'
ls
Bash에서 실행합니다 .
나도 할 수 있어
bash -c 'ls ; exec bash'
을 실행 ls
하고 bash 프롬프트를 열어 두십시오.
그러나 파일을 소싱하고 일부 별칭, 함수 및 환경 변수를 설정한 다음 프롬프트를 열어 두려고 합니다. 이렇게 하면 다음과 같습니다.
bash -c 'source env.sh ; exec bash'
물론 서브쉘은 별칭이나 함수를 상속하지 않기 때문에 이는 작동하지 않습니다. 이 문제를 해결할 수 있는 방법이 있나요? 나는 여전히 사용자의 .bashrc
소스를 확보하고 --init-file
옵션을 사용하지 않는 것을 선호합니다.
답변1
시작할 때 사용자의 init 파일을 소스로 하는 init 파일을 설정한 다음 원하는 다른 작업을 수행하십시오.
$ cat env.sh
. ~/.bashrc
export SOMEVAR="value"
somespecialfunction() {
printf '%s\n' "I'm so cool"
}
$ bash --init-file env.sh