cp SOMEFILE ..シンボリックリンクを介して別のディレクトリにコピーcd

cp SOMEFILE ..シンボリックリンクを介して別のディレクトリにコピーcd

次の設定を検討してください。

~/Desktop/Public/subdir
~/Desktop/subdir --> ~/Desktop/Public/subdir (symbolic link)

今私はこれをします:

cd ~/Desktop/subdir

これにより、リンクされたディレクトリにリンクされます。

今コマンドを実行すると:

cd ..

私は再びDesktopディレクトリに移動します。これは、cdコマンドがコンテキスト・コマンドであることを意味します。つまり、subdirシンボリックリンクを介して入力したことを覚えています。

ただし、コマンドを実行すると

cp testfile ..

testfileにコピーされますDesktop/Public

cdは(通常は予測できない)動作を好みますcp。とにかく、これらの行動の違いの理由が何であるかを知りたいです。ただレガシー問題なのか、それとも合理的な理由がありますか?

ベストアンサー1

cdaを介してディレクトリに入ったことを知っているのは、ディレクトリがsymlinkシェルに組み込まれているためです。このcpコマンドは外部バイナリであり、コマンドライン引数と環境変数を介してのみデータを渡します。環境変数に次のデータが含まれていません。どのように現在のディレクトリを入力しました。

を使用すると、一貫性を維持したいのと同じ機能を実現bashできます。これを達成します。マンページから:cdcpset -P

          -P      If  set,  the shell does not follow symbolic links when executing commands such as cd that change the current working directory.  It uses the physical directory structure instead.  By default, bash follows the
                  logical chain of directories when performing commands which change the current directory.

おすすめ記事