.bashrc를 직접 실행할 수 없는 이유는 무엇이며 "조달"이란 무엇입니까?

.bashrc를 직접 실행할 수 없는 이유는 무엇이며 "조달"이란 무엇입니까?

내 .bashrc에는 다음 권한이 있습니다. -rw엑스아르 자형-엑스아르 자형-엑스

그래서 "실행 가능"으로 표시됩니다. 그래서 나는 그것을 실행할 수 있어야합니다.

하지만 내가 시도할 때

$ ./.bashrc

나는 얻다:

./.bashrc: line 6: return: can only `return' from a function or sourced script

.bashrc의 5행과 6행:

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

나는 이 문제를 검색했고 다음 "source" 명령이 내가 필요한 것을 완벽하게 수행합니다.

$ source .bashrc

질문:

1-./.bashrc를 직접 실행할 수 없는 이유와 이 줄의 기능:

[ -z "$PS1" ] && return

2- "소스 스크립트"란 무엇이며 "소스" 명령의 구체적인 역할은 무엇입니까?(내 시스템에는 "source"에 대한 매뉴얼 페이지가 없습니다)

답변1

source도트 스크립트를 얻기 위해 사용(또는 표준 명령인 사용)과 이를 자체 스크립트로 실행하는 것의 .차이점은 이전에 논의되었습니다.

예를 들어 "소싱("." 또는 "source")과 bash에서 파일 실행의 차이점은 무엇입니까?source". 이는 결국 별도의 환경( 또는 없음 .) 에서 스크립트를 실행하는 것과현재의쉘 환경, 현재 쉘에 대한 환경 변수 및 쉘 옵션 등을 설정해야 하는 경우 이것이 수행하려는 작업입니다. 쉘 옵션을 설정하거나 스크립트에서 변수를 내보내는 것(사용하거나 source실행 하지 않고 .)은 상위 쉘에 영향을 주지 않습니다.

질문하신 구체적인 시험은,

[ -z "$PS1" ] && return

$PS1기본 프롬프트가 비어 있으면 도트 스크립트에서 반환됩니다. 이는 현재 쉘 세션이 대화형인지 테스트하는 방법입니다. 대화형이 아닌 경우 PS1변수가 설정되지 않고 프롬프트가 비어 있습니다. 이 경우 스크립트의 나머지 부분(아마도)은 대화형에서 초기화해야 하는 항목만 처리하므로 실행할 필요가 없습니다. 껍데기 .

현재 셸 세션을 종료하려면 as return대신 도트 스크립트를 사용해야 합니다 . 이는 또는 를 사용하여 스크립트를 호출한 세션과 동일합니다. 따라서 도트 스크립트는 쉘 함수와 매우 유사하게 작동합니다.exitexitsource.

관련 정보