Bash 명령줄에서 .bash_profile의 위치를 ​​정의할 수 있습니까?

Bash 명령줄에서 .bash_profile의 위치를 ​​정의할 수 있습니까?

저는 Objective C에서 프로그래밍 방식으로 bash를 실행하여 터미널과 같은 애플리케이션을 만들고 있습니다. 시작한 후 사용자에게 제어권을 넘기기 전에 몇 가지 명령을 실행하고 싶습니다. 일반적으로 이러한 파일은 에 있습니다 .bash_profile. 저는 해당 파일에 액세스할 수 없으며 사용자의 표준 bash 환경에 영향을 미치고 싶지 않기 때문에 우리를 귀찮게 하고 싶지 않습니다. 스위치를 시도했지만 -c script.shscript.sh 실행이 끝나면 bash가 종료됩니다. 실행해야 하는 명령을 프로그래밍 방식으로 입력하는 것 외에 다른 방법이 있습니까? 나는 사용자가 모든 것을 볼 수 없도록 하고 싶습니다.

답변1

다음을 시도해 볼 수 있습니다.

bash --rcfile <your_rc_file> --noprofile -i

옵션의 의미:

  • --rcfile: 다음을 시작 파일로 사용
  • --noprofile: 파일 등 을 처리하지 않습니다 .bash_profile. 일반적으로 로그인 셸에서 사용되는 파일입니다..profile/etc/profile
  • -i: 대화형 셸입니다( -c인수 처리 후 종료하는 것과 반대 입니다 -c).

이것맨페이지bash여전히 좋습니다 . 이를 사용하여 bash를 시작하는 방법에 대한 자세한 내용을 알아볼 수 있습니다.

답변2

의 끝에 및 have를 사용하여 --rcfile myfilebash를 호출 할 수 있습니다. 이는 대화형이지만 로그인이 아닌 쉘을 시작한다고 가정합니다.test -f ~/.bashrc && source ~/.bashrcmyfile

로그인 셸의 경우 , 및 측면에서 bash의 동작을 모방해야 합니다. /etc/profile이는 지루하지만 실행 가능합니다. 계속 실행되지만 다음을 포함합니다 ..profile.bash_profile.bash_login.bash_logoutbash --rcfile myfilemyfile

test -r /etc/profile && source /etc/profile

for f in ~/.bash_profile ~/.bash_login ~/.profile
do
   if test -r $f
   then
      source $f
      break
   fi
done

trap 'source ~/.bash_logout' 0

관련 정보