쉘이 대화형인지 테스트하는 방법에는 두 가지가 있다는 것을 알고 있습니다.
[[ $- == *i* ]] && echo "-i option flag indicates interactive"
[ -n "$PS1" ] && echo "prompt is set"
i
옵션 플래그를 확인하는 것이 더 안정적이라는 것을 읽었습니다 . 이는 상호 작용의 명확한 지표라는 점을 고려하면 의미가 있습니다.
/etc/profile
하지만 내 시스템의 시작 파일(예: ) 을 보면 Ubuntu를 실행하고 있음 /etc/bash.bashrc
이 확인됩니다 PS1
. 이것이 플랫폼별로 어떻게 다른지 모르겠습니다.
이것이 다음을 의미하는지 궁금합니다.
- 시작파일 작성자가 생각보다 실력이 부족하네요
PS1
이 경우에는 충분히 신뢰할 수 있습니다.PS1
전반적으로 충분히 견고하고 지나치게 생각합니다.
답변1
내 Ubuntu 16.04 시스템에서는 이것이 체크인입니다./etc/profile
:
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
...이것은 대부분 설정에 관한 것 같습니다 PS1
(나머지 rc 파일의 동작을 제어하는 것이 아니라). -i
테스트가 어떻게 도움이 될지 모르겠습니다 .