이 코드를 이해해 보세요.
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
-f가 정확히 무엇을 의미하는지 잘 모르겠습니다.
답변1
즉, 코드는 파일이 존재하는 경우 해당 파일을 소싱하고 /etc/bashrc
명령(연산자/인수)을 통해 존재 여부를 확인합니다.[
-f
if...then...else...fi
쉘 스크립트의 명령문은 명령의 종료 상태를 평가합니다(성공 시 0). 따라서 다음과 같이 하는 것이 옳습니다.
if ping -c 4 google.com; then
echo "We have a connection!"
fi
귀하의 경우 명령을 명령 [
이라고도 합니다 test
. 따라서 이 작업을 수행하는 것은 완전히 유효합니다.
if test -f /etc/bashrc; then
. /etc/bashrc
fi
-f 플래그는 제공된 경로가 존재하고 일반 파일인지 두 가지를 확인합니다. /etc/bashrc
디렉터리가 실제로 없거나 누락된 경우 테스트는 실패를 나타내기 위해 0이 아닌 종료 상태를 반환해야 합니다.
이 명령은 원래 쉘 내장 명령의 일부가 아닌 별도의 명령이었습니다. 요즘에는 Bourne과 같은 쉘 대부분에 이 기능이 내장되어 있으며 쉘이 이를 사용할 것입니다.
그런데 /etc/bashrc
관리자나 코드 조각의 원본 작성자가 불필요한 추가 파일을 사용하고 있는 것 같습니다. 존재합니다 /etc/bash.bashrc
. 이는 bash를 위한 시스템 전체 rc 파일로 의도되었기 때문에 사람들이 이를 사용하고 싶어합니다.
또한보십시오:
답변2
이를 확인하는 관련 매뉴얼 페이지는 쉘 자체의 매뉴얼 페이지입니다. 쉘은 bash에 내장된 기능을 제공하기 bash
때문입니다 .-f
내 시스템(CentOS 7)에서는 멋진 매뉴얼 페이지가 이를 다루고 있습니다. 다른 배포판에서는 grep
동일한 결과를 제공하지 못할 수도 있습니다. 그래도 실행 man bash
한 다음 "-f"를 검색하면 필요한 결과를 얻을 수 있습니다.
$ man bash | grep -A1 '\-f file$'
-f file
True if file exists and is a regular file.
$