〜は$ HOMEですが、時々ですか?

〜は$ HOMEですが、時々ですか?

CD〜

同じこと

cd $HOME

これも関連しています

cd /home/tandu

しかし、

cd ~not-tandu

に変更/home/not-tandu

これは純粋に文法的な選択ですか?カーネル(またはcd実行可能ファイル)はこれをどのように処理しますか?他のすべての項目が省略された場合にスラッシュを追加する必要がある特別な場合はありますか~?つまり、同じディレクトリに~/変更すると、以前のディレクトリになります。これは、変更する他のディレクトリの場合には該当しません。~~a

ベストアンサー1

~$HOME多くのシェルで提供されるエイリアスですが、$HOMEより一般的です。 $HOME実際、ここに環境変数HOMEを挿入(交換)するようにシェルに要求します。交換できるさまざまな環境変数があります。envリストを実行してみてください。~単語の先頭にない限り、常に認識されるわけではありません。比較するには、次の2つのコマンドを試してください。

ls /~
ls /$HOME

1つ目はls実行可能ファイルに渡され、ルートディレクトリから呼び出されたファイルを表示しようとし、/~2番目は拡張され、ls実行可能ファイルにコマンドライン引数として渡されます。すべてのPOSIXシステム(POSIXはUNIXおよびLinuxシステムの動作標準)では、複数のスラッシュを1つのスラッシュと同じように処理できるようになります。 passwd ファイルでユーザー名を検索し、ホームディレクトリに戻るようにシェルに指示するショートカットです。同等の環境変数はありません。これらの交換はすべてシェルで行われ、ほとんどのシェルでサポートされていますが、そのような環境変数のみがすべてのシェルでサポートされていることを保証します。さらに、これは実際に組み込まれたコマンドです。これは、シェル自体にディレクトリを変更するように指示する特別なコマンドです。シェルプロセスの基本プロパティを変更するために使用されるため、他のシェル組み込みと同様に別々の実行可能ファイルとして実装されません。パフォーマンス上の理由で組み込まれたシェルだけですが、以前のUNIXでは独自の実行可能ファイルとしてのみ使用できました。~$HOME//home/user//home/user/home/user~username$HOMEcdechoecho/bin/echo

おすすめ記事