환경을 설정하기 위해 몇 가지 명령을 실행한 다음 사용자에게 프롬프트를 표시하는 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