bashプロンプトで無効なコマンドを入力すると、メッセージが表示されます
-bash: {command}: command not found
-最初に何が意味しますか?
ssh computernameして、複製するcountコマンドではありません。
bashプロンプトで無効なコマンドを入力すると、メッセージが表示されます
-bash: {command}: command not found
-最初に何が意味しますか?
ssh computernameして、複製するcountコマンドではありません。
回答:
ログインシェルであることを意味します。
からman bash:
ログインシェルは、引数ゼロの最初の文字が-であるシェル、または--loginオプションで開始されたシェルです。
(bash用語では、「ゼロ番目」の引数はコマンド名であり、これはあなたの場合はbash。でした。) bash実行などのログインアクティビティを行うためのシグナルとしてこれを使用します.bash_profile。
ダッシュが自動的に追加される1つの方法は、シェルがで開始されている場合execです。Bashマニュアルから:
exec [-cl] [-a name] [command [arguments]][...]
-lオプションが指定されている場合、シェルはcommandに渡されるゼロ番目の引数の先頭にダッシュを置きます。
コマンドを実行するこれら2つの試行を比較しますnonexistent。まずなし-l:
$ exec bash
$ nonexistent
bash: nonexistent: command not found
そして、第二に、
$ exec -l bash
$ nonexistent
-bash: nonexistent: command not found
exec -lダッシュを付加するという事実は、bashをとして実行させる可能性のある方法ですが-bash、それ自体ではログインシェルであるとは言っておらず、OPがまったく使用さexec -lれていない可能性が非常に高いです。ドキュメントの中で-bashログインシェルにする部分は、「INVOCATIONログインシェルは、引数ゼロの最初の文字が-であるシェル、または--loginオプションで開始されるシェルです」です。
bash用語ではなく、Unixの慣習+ Cのインデックス付け:各プログラムにはパラメータリストが渡されます。最初のエントリはプログラム名で、その後に引数が続きます。Cアレイはゼロから始まるインデックス付けされているので、引数ゼロ(すなわち、ゼロ番目の引数である)プログラム名、実際の引数はインデックス1で始まる
他の答えは、それだけでは十分ですが、この機能はbashよりも一般的であることに言及する価値があります。
古くから、loginプログラムはargv[0]ユーザーのシェルを実行するときにダッシュを付加しており、シェルはこれを「ログインシェル」として動作する必要があることを示す記号として認識しています。これは、V7のmanページ(login(1)、sh(1))に記載されています。
ログインのようなサービスを提供する(ユーザーを認証し、シェルを実行する)プログラムはすべて、「ダッシュを追加」ルールに従う必要があります。たとえば、sshdは、次のコメントの下のssh / session.cで見ることができます。
/*
* If we have no command, execute the shell. In this case, the shell
* name to be passed in argv[0] is preceded by '-' to indicate that
* this is a login shell.
*/
すべてのシェルは先頭のダッシュを認識します。同等の-lオプションは、従来のBourneシェルまたは元のcshには存在しませんが、ほとんどの新しいシェル(bash、dash、ksh、yash、tcsh、zsh、rc、es、fish、およびcshの半最新バージョン)にはあります。
-lオプションがありますが、loginまだ使用していません。すべてのシェルは、プレフィックスをargv[0]「公式」メカニズムとして認識することが期待されています。
jhgjbjbkjln: command not found-いいえ-bash:。あなたが使用しているbashのUnixやLinux、OSXで、...?たぶん、これは特定の実装がデフォルトでエラーメッセージの前に置くものであり、それは何も意味しないかもしれないので...私は尋ねます。