web-dev-qa-db-ja.com

ドット(。)がソースのエイリアスとして使用された理由と、他のコマンドにもショートカットがないのはなぜですか?

[〜#〜] edit [〜#〜]:実際には、エイリアスではありません(回答を参照)

ご存じのとおり、シェルではドットコマンド(.)は、sourceコマンドのエイリアスです。

しかし、そのような奇妙なエイリアスの背後に理由があるのだろうか?どうやら、私はあまり使用しないので、短いエイリアスが必要になるでしょう。

では、なぜドットなのか?また、sourcecdlsなどの一般的に使用されるコマンドではないのはなぜですか。なぜエイリアスなのか?その背後に正当な理由はありますか?それとも歴史的な理由がありますか?

注:私は最初にこの質問をServer Faultに投稿しましたが、代わりにここに投稿するよう提案されました。

6

.POSIX標準 です。

source.のbash組み込みシノニムであり、.ほど移植性がありません

また、Bashリファレンスマニュアルでは、.4.1 Bourne Shell Builtins の下にリストされ、source4.2 Bash Builtin Commands の下にリストされます。

の同義語。 (Bourne Shell Builtinsを参照してください)。

Bashがそれをsourceと名付けた可能性があります。これは、Cシェルで呼び出されたためです(コマンドが明らかに発生した場所です)。

12
jesse_b

Bashに関する限り、.sourceはどちらか一方のエイリアスではありませんが、どちらも同じ基本的な関数source_builtinを呼び出す組み込み関数であるというのは簡単な事実です。 。

Bashソースコードのsource.defファイルを見てください:

$PRODUCES source.c

$BUILTIN source
$FUNCTION source_builtin
$SHORT_DOC source filename [arguments]
Execute commands from a file in the current Shell.

Read and execute commands from FILENAME in the current Shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
$END

$BUILTIN .
$DOCNAME dot
$FUNCTION source_builtin
$SHORT_DOC . filename [arguments]
Execute commands from a file in the current Shell.

Read and execute commands from FILENAME in the current Shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
$END

参考文献

3
slm

Dotコマンドは、おそらく1976年にBourne Shellによって導入されました。

Sourceコマンドは、1977年または1978年にcshによって導入されました。

したがって、別名関係ではなく、「発明」の2つの異なる名前が同時に存在します。

ところで:cdがこのように命名された理由を教えてください。このコマンドは以前はchdirと呼ばれていましたが、1974年に予定されている110ボーモデムには長すぎ(タイプが遅い)...

2
schily