내 .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
대신 도트 스크립트를 사용해야 합니다 . 이는 또는 를 사용하여 스크립트를 호출한 세션과 동일합니다. 따라서 도트 스크립트는 쉘 함수와 매우 유사하게 작동합니다.exit
exit
source
.