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
$HOME
cd
echo
echo
/bin/echo