linux – 为什么我不能在符号链接中使用“..”中的文件?

我有以下目录结构:

misha@misha-lmd:~/tmp$ls -l
total 4.0K
-rw-r--r-- 1 misha lmd 21 Feb 18 21:00 hello.py
lrwxrwxrwx 1 misha lmd 20 Feb 18 21:01 symlink -> /home/misha/nobackup/

接下来,我尝试以下方法

misha@misha-lmd:~/tmp$cd symlink
misha@misha-lmd:~/tmp/symlink$cat ../hello.py 
cat: ../hello.py: No such file or directory

为什么这不起作用?

如果我这样做:

misha@misha-lmd:~/tmp/symlink$cd ..
misha@misha-lmd:~/tmp$cat hello.py
print "Hello World!"

一切都很好. cd处理..正确,但猫没有.什么是这种巫术,我如何按照我希望的方式让事情发挥作用?

编辑

好的,多亏了这里的一些答案,我已经发现了更多关于发生了什么的事情.首先,cd实际上不是可执行文件,它是shell的内置命令(在本例中为bash):

misha@misha-lmd:~/tmp$type cd
cd is a shell builtin

如果你是bash,你可以找到bash用于管理的环境变量,包括移动目录.还有其他内置函数,如pwd,具有实际可执行文件的对应项:

misha@misha-lmd:~/tmp/symlink$type pwd
pwd is a shell builtin
misha@misha-lmd:~/tmp/symlink$/bin/pwd
/home/misha/nobackup
misha@misha-lmd:~/tmp/symlink$/bin/pwd -L
/home/misha/tmp/symlink

/ bin / pwd可执行文件认打印物理路径,但也可以打印给定`-L’开关的逻辑路径.同样,当我尝试做:

misha@misha-lmd:~/tmp/symlink$cat ../hello.py 
cat: ../hello.py: No such file or directory

事情正在失败,因为..被解释为物理父目录,而不是逻辑目录.这允许我将我的问题细化为:

当我为可执行文件指定命令行参数时,我怎么能得到…表示逻辑父,而不是物理父?

解决方法:

因为符号链接目录中的目录..是您的主目录.

../something意味着“转到..目录”,而不是“剥离最后一个路径组件”.

更改为符号链接后,您可以尝试使用pwd -P查看您的位置.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...