bash 앞의 대시 (-)


14

을 입력하는 것과 같이 OS X (10.6.4) 터미널에서 bash 쉘을 검사하면 다음과 같이 echo $0쉘 앞에 대시가 -bash있습니다. 이 대시는 무엇을 의미합니까?

답변:


14

bash로그인 쉘로 호출 된다는 의미입니다 .


man bash 말한다 :

로그인 쉘은 인수 0의 첫 문자가 -이거나 --login옵션으로 시작된 문자입니다 .

bash가 대화식 로그인 쉘 또는 --login옵션이 있는 비 대화식 쉘로 호출 될 때 /etc/profile파일이 존재하는 경우 먼저 파일에서 명령을 읽고 실행 합니다. 해당 파일을 읽은 후, 그것은을 찾습니다 ~/.bash_profile, ~/.bash_login그리고 ~/.profile, 순서대로, 그리고 읽고 존재하고 읽을 수있는 첫 번째에서 실행하는 명령을. --noprofile쉘이 동작을 억제하기 시작할 때 옵션을 사용할 수있다.

로그인 쉘이 종료되면 bash는 파일에서 명령을 읽고 실행합니다 (있는 ~/.bash_logout경우).


당신은 찾을 수 있습니다 login -pf당신에 ps기본적으로 로그인 쉘을 시작 출력.

실행 시도 login -pf하고 login -pfl그 차이를 참조하십시오. man login차이점을 설명합니다.

-l이 로그인 세션이 아니라고 로그인에 의해 실행 프로그램 지시 (관례를, 로그인 세션의 첫 번째 문자로 하이픈으로 프로그램에 신호되어 argv[0],이 옵션을 비활성화하는), 및 방지 그것을에서 chdir(2)사용자의 홈 디렉토리에 보내고 . 기본값은 하이픈을 추가하는 것입니다 (이것은 로그인 세션입니다).


설명과 man인용에 감사드립니다
marshall.ward

1
나는 우분투를 사용하고 있으며, 다른 행동을 보입니다 echo $0:에 echo $0의해 호출 된 터미널을 입력 ctrl + alt + f1하면 결과는 다음과 같습니다 -bash. 하지만에 의해 호출 된 termianl로 입력하면 ctrl + alt + t결과는 bash(대 시점 없음)입니다. 이유를 설명해 주시겠습니까?
Frozen Flame

@ frozen-flame 하나는 로그인 쉘이고 다른 하나는 로그인 쉘이 아닙니다. OS X 터미널과 Linux 터미널은 이와 관련하여 다른 동작을합니다.
Daniel Beck

@DanielBeck 그것은 다른 하나가 로그인 쉘이 아니라는 증거가 아닙니다. bash가 --login인수 와 함께 시작되면 bash는 변경되지 않지만 argv[0]로그인 쉘 역할을합니다.
Ruslan

@Ruslan Sure는 이론상 여전히 로그인 쉘일 수 있습니다. 그러나 그렇지 않습니다. (적어도 나는 매우 놀랐을 것입니다.)
Daniel Beck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.