Bashスクリプト - .実際に動作しますか? [コピー]

Bashスクリプト - .実際に動作しますか? [コピー]

非常に簡単な質問であることは間違いありませんが、検索が難しいため(または少なくとも正しい用語がわからないため)、Googleを介して合理的な答えを見つけるのに苦労しています。

スクリプトでピリオドが使用されていることを確認しました(例:「ドット」、別名この人>「。」)。デフォルトでは、現在の作業パスを定義する「pwd」に拡張されているようです(ls -la例:の出力に従って)。 。しかし、明らかに多くがあります。たとえば、ここに「.」がどのように機能するかを理解していない2つの例があります。使用されるものと実際に意味するもの:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

これ:

. <(cat /proc/32684/environ |xargs -0 -i echo {} |grep SSH)

(注:これはssh-agentに関する興味深い記事からのものです:http://rabexc.org/posts/pitfalls-of-ssh-agents)

これが使用されているコンテキストを見ると、ピリオドは「現在のプロセス」またはそれに似たもの(おそらく現在のシェル?)と、ここにロードされるファイルまたはコマンド置換の出力を表すようです。

それでも推測し続けると仮定するのではなく、答えを知っておくとよいでしょう:-)

編集する: ボーナスの質問です。 「#!」は shebang/hash-bang/Sharp-bang などです。ドット演算子/ショートカットの用語/名前はありますか?

答え1

そのファイルがあれば実行してみてください。

。たとえば、<(ls) はディレクトリ内のすべてのファイルを実行します。名前はドットです。これが私がオンラインで見つけたものです。 https://pubs.opengroup.org/onlinepubs/009695399/utilities/dot.html ところが正直、私は初心者だったので、今日参加しました。私はすぐに多くの天才がこの質問に答えるのを見ると確信しています。

答え2

簡単に言うと:

  1. これを「ドット表記法」といいます。
  2. このコマンドsourceはドットコマンドのエイリアスです。.

Prvt_Yadavのリンクにはいくつかの説明があります(https://stackoverflow.com/q/16011245/9235408)とウェイランド(https://unix.stackexchange.com/a/114306/266125) しかし、ここで質問に答えるには、次のようにします。

使用。 ./(ドットスペースドットスラッシュ).....サブシェルをフォークせずに現在のシェルでスクリプトを実行します。

答え:https://stackoverflow.com/a/16011496/2927555

現在のシェルのスクリプトファイルからソースコードをインポートするには、ドット表記を使用してください。つまり、サブシェルを作成する必要はありません。

答え:https://stackoverflow.com/a/16011414/2927555

関連情報