bash 명령을 실행하고 프롬프트를 열어 두는 방법은 무엇입니까?

bash 명령을 실행하고 프롬프트를 열어 두는 방법은 무엇입니까?

환경을 설정하기 위해 일부 명령을 실행한 다음 사용자에게 프롬프트를 표시하는 bash 함수를 작성 중입니다.

나는 뛸 수 있습니다

bash -c 'ls'

lsBash에서 실행합니다 .

나도 할 수 있어

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

관련 정보