~
は$HOME
多くのシェルによって提供されるエイリアスですが、$HOME
より普遍的です。 $HOME
実際に環境変数HOMEをここに挿入(置換)するようシェルに要求します。置換できる環境変数はかなりありenv
ます。リストを実行してみてください。~
単語の先頭にない場合、常に認識されるとは限らないことに注意してください。比較のために次の2つのコマンドを試してください。
ls /~
ls /$HOME
最初の実行可能ファイルとしてLSに渡される/~
、その後というファイルを見しようとしている~
ルートディレクトリでは、第2膨張する$HOME
となると//home/user
、次に実行可能なコマンドライン引数としてLSに渡されます。すべてのPOSIXシステム(POSIXはUNIXおよびLinuxシステムの動作方法の標準です)では、複数のスラッシュを1つのスラッシュと同じように扱うことができるため//home/user
、と同じ/home/user
です。 ~username
passwdファイルでユーザー名を検索してホームディレクトリを返すようにシェルに指示するためのショートカットです。同等の環境変数はありません。これらの置換はすべてシェルによって行われ、それらのほとんどでサポートさ$HOME
れていますが、すべてのシェルでサポートされることが保証されているのは環境変数のみです。また、cd
実際には組み込みコマンドです。これは、シェル自体にディレクトリを変更するよう指示する特別なディレクティブです。echo
シェルプロセスの基本的な属性を変更するために使用されるため、別の実行可能ファイルとして実装できる他のシェルビルトインとは異なります。 echo
は、パフォーマンス上の理由から組み込みのシェルにすぎませんが、UNIXの古き良き時代では、独自の実行可能ファイルとしてのみ利用可能/bin/echo
でした。