man zshbuiltins
나는 인용된 이 사전 명령 수정자를 발견했습니다 man zshmisc
. 예제를 찾아보았지만 찾을 수 없었습니다.
내 페이지에 표시되는 내용은 다음과 같습니다 man zshmisc
.
PRECOMMAND MODIFIERS
A simple command may be preceded by a precommand modifier, which will alter
how the command is interpreted. These modifiers are shell builtin commands
with the exception of nocorrect which is a reserved word.
- The command is executed with a `-' prepended to its argv[0] string.
내가 시도한 것은 다음과 같습니다.
prompt> - echo
cd: no such file or directory: /Users/bmiller286/Projects/bgovecholonestar-eventsvc
이 사전 명령 수정자를 사용하는 방법에 대한 한두 가지 예는 무엇입니까?
oh-my-zsh
편집: 별칭이 -
처럼 보이는데 cd -
, 이는 왜 cd
불평하는지 설명합니다. 지금까지 나는 패러다임 앞에 이러한 추가 기능을 지원하는 사용 사례를 하나만 보았으며 -
그것은 argv[0]
로그인 셸이었습니다.
위의 문서는 이것이 로그인 쉘에만 국한되지 않고 일반적인 패러다임인 것처럼 동작합니다. 그래서,
- 이것은 기본적으로 로그인 쉘에 불과합니까?
- 그렇지 않다면 이것은 많은 프로그램이 지원하는 일반적인 이스터 에그입니까?
- 이를 지원하는 프로그램을 인터넷에서 검색하려면 무엇을 검색해야 합니까? (
-
많은 엔진이 이를 부정 연산자로 취급하기 때문에 검색이 어렵습니다 . 사전 명령 수정자를 검색해도 이 항목은 거의 발견되지 않습니다.)
답변1
이것:
% cat > .bash_login
echo this is a login shell
% bash
bash$ exit
% - bash
this is a login shell
bash$
또는 영어로: 일부 쉘은 자신의 것을 확인 argv[0]
하고 거기에 대시가 있으면 "로그인 쉘" 모드로 들어갑니다. 이것이 다양한 셸에서 무엇을 의미하든 적어도 읽은 시작 파일이 변경될 가능성은 있습니다. Bash의 경우 다음을 참조하세요.6.1 배쉬 호출하기그리고6.2 Bash 시작 파일;zsh의 경우 적어도5.1 파일 시작/닫기매뉴얼에는 로그인 쉘이 언급되어 있습니다(그러나 쉘이 로그인 쉘인지를 결정하는 방법을 설명하는 섹션을 찾을 수 없습니다).
Zsh는 필요할 경우 이 기능에 쉽게 액세스할 수 있는 방법을 제공하기 위해 여기에 있는 것 같습니다. 이를 수행하는 다른 방법이 있을 수 있습니다. 적어도 -l
Bash와 Dash가 선택한 옵션은 같은 의미입니다.