왜 $ 0이 -bash로 설정되어 있습니까?


8

첫 번째 로그인 프로세스 이름이로 설정되어있는 것 같습니다 -bash. 그러나 서브 쉘을 사용하면 이름이됩니다 bash. 예를 들면 다음과 같습니다.

root@nowere:~# echo $0
-bash
root@nowere:~# bash
root@nowere:~# echo $0
bash

-bash 다음과 같은 일부 스크립트가 실패합니다 . /usr/share/debconf/confmodule

exec /usr/share/debconf/frontend -bash
Can't exec "-bash": No such file or directory at /usr/share/perl/5.14/IPC/Open3.pm line 186.
open2: exec of -bash failed at /usr/share/perl5/Debconf/ConfModule.pm line 59

누구나 왜 $0설정되어 있는지 이유를 알고 -bash있습니까?


1
@ RaduRădeanu 쓸모없는 고양이 사용 발견!
gniourf_gniourf

답변:


5

echo $0명령 출력이 로그인 쉘로 호출 -bash되었음을 의미합니다 bash. man bash126 행 어딘가에 말합니다 :

A  login shell is one whose first character of argument zero is a -, or 
one started with the --login option.

로그인 쉘과 비 로그인 쉘의 차이점 에 대해서는 여기를 참조하십시오 .

따라서 쉘은 여전히 /bin/bash( echo $SHELL명령 으로 확인할 수 있습니다 ) 정상적으로 명령을 내리는 것이 좋습니다.

exec /usr/share/debconf/frontend bash

감사합니다. 로그인이 로그인 쉘 프로세스 이름에 "-"를 올바르게 추가하고있는 것 같습니다. 그것은 내 질문에 대답합니다.
James Shimer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.