バックスラッシュポイントはコマンドで何を意味しますか?

バックスラッシュポイントはコマンドで何を意味しますか?

私がインストールしたソフトウェアは、私のプロフィールに次の行を挿入しました。

[ -s "$SOME_FILE" ] && \. "$SOME_FILE"

私はドットが.同義であるsourceことを知っているので、これはファイルをインポートするだけだと思いますが、\.以前は他の操作を実行したことを見たことがありません。

DVに関する編集:./「バックスラッシュポイント」を検索すると、実行可能ファイルを呼び出すときに問題が発生し、マンページはman source表示\.されません。他に何を試すべきかわからないので、この質問をします。

編集2:関連質問を見る

答え1

引用符の外側のバックスラッシュは、「分析中に次の文字を文字通り解釈する」という意味です。.パーサの通常の文字であるため、組み込みコマンド\.と同じ方法で解析され、呼び出されます(bashでは同義語です)。..source

場合によっては、この場合に違いがある可能性があります。ユーザーが.以前に呼び出されたエイリアスを定義し、エイリアスを拡張するシェルから読み取っている場合(bashはデフォルトで対話式に呼び出されたときにのみこれを実行します)、エイリアスはトリガーされますが、組み込み.profileコマンドは引き続き機能します。これは、シェルが何らかの方法で参照される単語に対してエイリアス拡張を試みないために発生します。.profile.\.

ユーザーがに書き込みをしていたので.に変更されたようです。\..

これはという\.関数を呼び出すことに注意してください.。おそらく、関数を書くユーザーはエイリアスを書く人よりも知識が多く、サードパーティの.profileコードを含める場合は標準コマンドをオーバーライドするのが悪いことがわかります。ただし、エイリアスと関数を避けるには、次のように書くことができますcommand .。このコードスニペットの作成者は、組み込み機能のないアンティークシェルに興味があるか、commandそれを認識していなかったため、そうしませんでした。それ。

しかし、定義はどのエイリアシングインは.profile悪い考え.profileです。会議初期化スクリプトではありませんシェル初期化スクリプト。 bashのエイリアスはに属します.bashrc

答え2

これは\.「文字通りの点」、つまり単なる点です。これは標準コマンドとして扱われます.sourceのコマンドに似ていますbash)。

POSIX 標準には次の内容があります。これについて(私の強調点)

<backslash>引用符なしのAは、後続の文字のリテラル値を保持します。、を除いて<newline>。が<newline>後に来ると、<backslash>シェルはそれを行の連続として解釈します。入力をトークンに分割する前に削除する必要があります<backslash><newline>。エスケープ文字は<newline>入力から完全に削除され、スペースで置き換えられないため、トークン区切り文字として使用できません。

ドット文字できるニックネーム:

$ alias .='echo hello'
$ .
hello

これは\.、コマンドのエイリアスバージョンを使用しないことを意味します.なぜなら

トークンを区切った後、Shell Grammarの文法規則を適用する前に、単純なコマンドとして認識されるコマンド名の単語の結果の単語を調べて決定する必要があります。引用されていませんか?、有効なエイリアスです。

関連情報