2017-11-17 1 views
0

.bashrc 파일 끝에 echo thisIsMyBash을 추가했습니다. 이제 ctrl+alt+t으로 새 터미널을 작성하면 thisIsMyBash이 시작 부분에 쓰여집니다. 이것은 예상대로입니다.bash 및 .bashrc의 이상한 동작

내 터미널에 /bin/bash을 입력하면 thisIsMyBash도 내 단말기에 표시됩니다.

그러나 내 터미널에 /bin/bash -c "source ~/.bashrc"을 쓸 때 아무 것도 쓰지 않습니다. 왜?

실제로 내가 /bin/bash -c "source ~/.bashrc" && exec /bin/bash -li이라고 쓰면 thisIsMyBash도 표시됩니다. 왜?

아이디어가 있으십니까?

+2

'.bashrc' 파일에 대화 형 셸이 아닌 경우 일찍 종료되는 항목이 있습니까? – chepner

+0

프로그래밍 문제는 아니지만 어떤 경우에도이 동작을 재현 할 수 없습니다. 어쩌면 bashrc에 특정 논리가 있기 때문에 특정 조건에서 반향 전에 실행을 멈출 수 있습니까? bashrc에 echo 만있는 깨끗한 셸에서는'bash -c source'를 통해 실행할 때를 포함하여 매번 얻습니다. –

+0

@ MarkReed 행동은 나를 위해 재현하기가 쉬웠습니다. 끝 부분에 에코를 배치하면 동일한 결과가 나타납니다. –

답변

1

bash의 "-i"옵션을 사용하면 원하는대로 작동합니다. 이 옵션은 쉘을 대화식으로 만듭니다. 이것을 시도하십시오 :

/bin/bash -i -c "source ~/.bashrc" 

보십시오 here보십시오.

+0

이것은 bashrc 테스트에서 상호 작용을 테스트하고 발견되었을 때 다르게 작동하는 코드가 있음을 의미합니다. 그 문맥은 그 질문에 존재하지 않았다. –