Shell
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
. 無論如何,我想知道這種行為差異的原因是什麼?只是遺留的東西還是有充分的理由?
cd
知道您已經通過 a 進入目錄的原因symlink
是因為它是內置在 shell 中的。該cp
命令是一個外部二進製文件,僅通過命令行參數和環境變數傳遞數據。環境變數不包含有關您如何進入目前目錄的數據。如果您正在使用
bash
,則可以使cd
功能與cp
您希望事情保持一致一樣。set -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.