/etc/profile이 $-의 -i 플래그 대신 PS1을 확인하는 이유는 무엇입니까?

/etc/profile이 $-의 -i 플래그 대신 PS1을 확인하는 이유는 무엇입니까?

쉘이 대화형인지 테스트하는 방법에는 두 가지가 있다는 것을 알고 있습니다.

[[ $- == *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테스트가 어떻게 도움이 될지 모르겠습니다 .

관련 정보