저는 Objective C에서 프로그래밍 방식으로 bash를 실행하여 터미널과 같은 애플리케이션을 만들고 있습니다. 시작한 후 사용자에게 제어권을 넘기기 전에 몇 가지 명령을 실행하고 싶습니다. 일반적으로 이러한 파일은 에 있습니다 .bash_profile
. 저는 해당 파일에 액세스할 수 없으며 사용자의 표준 bash 환경에 영향을 미치고 싶지 않기 때문에 우리를 귀찮게 하고 싶지 않습니다. 스위치를 시도했지만 -c script.sh
script.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 myfile
bash를 호출 할 수 있습니다. 이는 대화형이지만 로그인이 아닌 쉘을 시작한다고 가정합니다.test -f ~/.bashrc && source ~/.bashrc
myfile
로그인 셸의 경우 , 및 측면에서 bash의 동작을 모방해야 합니다. /etc/profile
이는 지루하지만 실행 가능합니다. 계속 실행되지만 다음을 포함합니다 ..profile
.bash_profile
.bash_login
.bash_logout
bash --rcfile myfile
myfile
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