무엇을합니까? .bashrc는 실제로합니까?


13

예를 들어 보면 내 .bashrc파일에 새 별칭을 사용하면 해당 터미널 창에서 즉시 사용할 수 없으며 최근까지 .bashrc파일 을 다시로드하기 위해 터미널을 다시 시작해야한다고 생각했습니다 . 그런 다음 글을 쓰면 어딘가에

. .bashrc

이것은 .bashrc현재 창에서 파일을 다시로드 할 것이고 다시 시작할 필요가 없습니다. 이것은 지느러미 작동하지만 실제로 무슨 일이 일어나고 있습니까? 왜 .bashrc파일을 다시로드 합니까?


1
을 사용 .하면 파일을 "소스"합니다. 기본적으로 실행되고 있음을 의미
Der Hochstapler


1
@DanD. 대답은 동일하지만 그 질문은 나에게 분명하게 들립니다.
Calimo

1
@ Dan D.이 질문은의 언급에 관한 것입니다 . . 지금까지 나는 항상 생각했다 . 현재 디렉토리의 속기 및 .. 상위 디렉토리의 속기입니다. 나는 결코 깨닫지 못했다 . 소스의 별칭이었습니다 (나에게 완전히 새로운 개념이었습니다). 누군가가 여기에 와서 차이점을 알고 싶다면 bash 스크립트 실행과 bash 스크립트 소싱의 차이점은 무엇입니까? 매우 도움이됩니다.
스페이드

답변:


17

.명령 이기 때문 입니다.

쉘 내장 명령으로, 명명 된 파일을 읽고 현재 쉘 프로세스에서 명령을 실행합니다.

Bourne Again 쉘은 source이 명령과 동의어입니다. 그러나 이것은 Bashism입니다 (Bourne Again 쉘은 C 쉘에서 가져 왔습니다). Bourne Again 쉘이 TENEX C 쉘, Z 쉘 및 다른 쉘과 공유하는 것은 Bashism이지만 Korn 쉘은 아닙니다. 단일 UNIX 사양은 표준화 만합니다 ..

또한 Bourne Again 쉘이 POSIX 호환 모드에서 실행 중인지 여부에 따라 ./ 의 동작이 source미묘하게 변경됩니다. (비표준 동작은 다른 쉘과 동일하지 않지만 다른 쉘과 비슷합니다. 예를 들어 Z 쉘에는 사전 컴파일 된 쉘 스크립트 메커니즘 이 있으며 검색 경로 처리 와는 source미묘하게 다릅니다 .. 쉘 .은 다른 예제를 위해 쉘 기능을 실행합니다.)

~/.bashrc쉘 시작시 내용이 (쉘 프로세스 호출 방법에 따라) 자동으로 제공되는 여러 파일 중 하나 일뿐 입니다. 수동으로 소싱 하는 것을 금지하는 것은 없습니다 . 해당 조치가 dem 등원이 아닌 경우 나중에 수정해야 할 작업이있을 수 있습니다.

추가 자료


1

help . 당신에게 말할 것입니다 :

.: . filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

Saying . .bashrc은 파일 .bashrc을 변경하여 현재 세션에서 사용 가능한 파일 을 실행 (소스)합니다 .

기본적으로 ~/.bashrc로그인시 읽습니다.

.의 동의어입니다 source.


1

.명령은 같은 일이 source당신의 실행 명령 .bashrc파일을. 그러면 정의한 모든 별칭과 다른 셸 설정 / 변수가 현재 환경에 추가됩니다. 에서 source의 도움말 페이지 :

source: source filename [arguments]
    Execute commands from a file in the current shell.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.