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

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

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

나는 뛸 수 있습니다

bash -c 'ls'

lsbash에서 실행됩니다.

나도 할 수 있어

bash -c 'ls ; exec bash'

lsbash 프롬프트를 실행 하고 열어 둡니다.

그러나 파일을 가져와서 몇 가지 별칭, 함수 및 환경 변수를 설정한 다음 다음과 같이 프롬프트를 열어 두고 싶습니다.

 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

관련 정보