如何找到实际的工作目录?

如何找到实际的工作目录?

当我尝试在 Linux 命令提示符下查找当前工作目录(使用“pwd”)时,它将显示包含符号链接的目录。例如,如果我创建一个符号链接并使用它来访问该目录:

ln -s /mnt/backup /home/biotech/backup
cd /home/biotech/backup
pwd

这将显示“/home/biotech/backup”而不是“/mnt/backup”。Ubuntu 和 Cygwin 上都会发生这种情况。

我可以使用什么命令来查看后者,即“真实”目录?

答案1

可能:

pwd -P 

来自帮助:

“-P:打印的路径名将不包含符号链接。”

答案2

/bin/pwd

它不知道你去过哪里,也不知道你是怎么到达那里的,所以它会根据第一原理来推理。

答案3

为了解决一般情况下的这个问题(即不仅仅是当前目录),使用:

readlink -f PATH

答案4

为了获得更可移植的(符合 POSIX 规范的)pwd -P命令,我们可以使用常规的内置 shell command

# cf. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html#tag_17_06

command -p pwd -P
#builtin command -p pwd -P  
#alias pwd=echo; PATH="$(command -p getconf PATH)" 'pwd' -P

相关内容