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
この辞書コマンド修飾子を使用する方法の1つまたは2つの例は何ですか?
oh-my-zsh
編集:エイリアス-
のように見えますがcd -
、これはなぜcd
文句を言うのかを説明します。これまで、私はパラダイムの前にこれらのアドインをサポートするユースケースを1つだけ見てきましたが、-
それは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が選択したオプションは同じ意味です。