2011-06-21 10:31:01 +0000 2011-06-21 10:31:01 +0000
37
37

Linux/UNIX sh shell中的哪个命令会返回我的当前目录?

使用sh shell(不是bash),Linux/UNIX中哪个命令可以打印出我的当前目录?

$ *showmewhereiam*
/sys/kernel/debug
$

答案 (4)

60
60
60
2011-06-21 10:32:09 +0000

试试pwd

$ pwd
/home/<username>
11
11
11
2011-06-21 12:48:02 +0000

虽然一般的答案是pwd,但请注意,这可能会给出不同的结果,这取决于你如何到达一个给定的目录,以及该路径是否包括符号链接。

例如,如果你有一个名为real的目录和一个名为virtual的通往该目录的符号链接,而你cd到了virtual目录,那么pwd将显示该virtual目录名,即使你实际所在的目录是real

要显示真正的底层目录,使用pwd -Preadlink -f(对于任意路径):

$ mkdir real $ ln -s real virtual $ cd virtual $ pwd /home/_username_/tmp/virtual $ pwd -P /home/_username_/tmp/real $ readlink -f . /home/_username_/tmp/real

注意,shell经常用自己的内部版本替换pwd命令,所以在我的系统(RHEL6)上,尽管pwd(1)手册页面建议--physical可以和-P一样工作,但因为我运行的是bash,所以并没有:

$ pwd --physical bash: pwd: --: invalid option pwd: usage: pwd [-LP] $ /bin/pwd --physical /home/_username_/tmp/real $ /usr/bin/env pwd --physical /home/_username_/tmp/real
```。
1
1
1
2017-02-20 09:13:21 +0000
$ pwd
/your/current/directory
$

pwd来自print工作目录

来自Linux手册页面。

名称

pwd - 打印当前/工作目录的名称

概要

pwd [OPTION]…。

说明

打印当前工作目录的完整文件名。

-L , –逻辑

使用环境中的 PWD,即使它包含符号链接

-P–物理

避免所有符号链接

–帮助

显示帮助并退出

–版本

输出版本信息并退出

注意。你的shell可能有自己的pwd版本,它通常会取代这里描述的版本。请参考你的shell文档,了解它所支持的选项的细节。

(…)

1
1
1
2011-06-21 13:24:23 +0000

正如其他人所说,pwd通常能很好地完成这项工作。不过,我想补充一个对我有帮助的想法。

在所有常用的shell上,你可以自定义命令提示符的外观。我喜欢自定义我的命令提示符,让它同时显示我所在的计算机名称和我的工作目录。这样一来,我总是知道我在哪里。(计算机名称部分可以帮助我意识到我所使用的终端窗口是否被用来SSH进入远程服务器。) 例如,当我在我的笔记本上打开一个新的终端窗口时,我把它叫做Plastico,我看到了这个。

Plastico ~> cd Desktop/
Plastico ~/Desktop> cd ~/Sites/raygunrobot.com
Plastico ~/Sites/raygunrobot.com> cd /usr
Plastico /usr>

你可以看到它把我的主目录缩写为~. 我发现这样做对我的终端提示非常方便–我总是能一目了然地知道我在哪里,甚至比我看Finder窗口还要方便。

在tcsh上,我是通过在我的home目录下的.tcshrc文件中添加set prompt = 'Plastico %~%# ' 来实现的。在 ksh 上,我也是通过在我的 .profile 文件中添加 export PS1="Plastico $PWD $ " 来实现的。但是作为一个Linux用户,你可能会使用Bash,而我对Bash没有太多经验(我是个怪人)。但是看起来像我也许可以通过在我的.bashrc文件中添加PS1="Plastico \w $ "来实现。

编辑:刚刚注意到OP说你对sh感兴趣,而不是bash。哦,好吧;希望大家觉得这个有用。