私はディレクトリ~/www
におり、~/.bashrc
を編集しようとしています。Linuxの2つの外見上等価なパスは、どちらも動作しません。
私はvi ../.bashrc
でした.Vimは新しい空のファイルを作成します。
私はcd ..
とvi .bashrc
を実行し、正しいファイルを開きます。
これはLinuxで起こるはずですか?
編集: touch ../.bashrc
をに入れてみましたが、作成しておくべきファイルが見つかりません。
私はディレクトリ~/www
におり、~/.bashrc
を編集しようとしています。Linuxの2つの外見上等価なパスは、どちらも動作しません。
私はvi ../.bashrc
でした.Vimは新しい空のファイルを作成します。
私はcd ..
とvi .bashrc
を実行し、正しいファイルを開きます。
これはLinuxで起こるはずですか?
編集: touch ../.bashrc
をに入れてみましたが、作成しておくべきファイルが見つかりません。
これは、現在のディレクトリがシンボリックリンクである場合に発生します。
あなたシンボリックリンクにcd
は、..
は、シンボリックリンクのターゲットの親を参照します:
$ ln -s /tmp mylink
$ cd mylink
$ pwd
/home/me/mylink
$ realpath .
/tmp
$ realpath ..
/
しかし、bashは巧妙であることによって、あなたを混乱させ、異なったcd ..
振る舞いを持つことになります。 「.. `
バックスラッシュまたはDIRの始まりの直前のパス名の構成要素 を除去することで処理されます。ここで
help cd
です。
これはあなたcd ..
、bashは魔法/home/me/mylink
から/home/me
に行くことができますときことを意味します。この違いは非常に混乱しますが、非常に便利です。
cd -P ..
を使用すると、他のすべてのツールと同様に、この魔法は呼び出されず、/home/me/mylink
から/
になります。
あなたは..
は「親ディレクトリ」を意味特別な構文どのような方法ではないことを実感とき、これは簡単です。すべてのディレクトリは、実際に古いUnixシステム..
という名前の正直ツーライナスのエントリを持っている、これは単なる便利な大会だった、とあなたが望んでいたようmkdir /foo/bar
も自動的にln /foo /foo/bar/..
あなたは、削除または再リンク可能性があろう。今日では、ファイルシステムによって厳密に強制されています。
明らかに、/tmp/..
は/
にリンクしています。これは、シンボリックリンクをたどって/tmp
になったため変わっていません。
'vi。/ bashrc'は' .bashrc'ではなく 'bashrc'を編集します。 on * nixで始まるファイルは隠されており、 'ls -a'や' ls -la'を使って表示します。 – mata
Typoは、 'vi .bashrc'である必要があります。 –