当我输入'cd~'时,'〜'是什么目录?

时间:2009-02-14 08:01:33

标签: linux unix shell command-line

我只是新手使用SSH,但是当我登录时,我最终进入目录〜,这通常是FTP中的同一目录。我仍然可以去/,但我不知道是什么〜的意思。家?与/有什么关系,或者我怎么能找到?

11 个答案:

答案 0 :(得分:17)

〜是当前登录用户主目录的别名。要找出真正的位置,请在登录后立即输入pwd(代表:打印工作目录) ,这样可以为您提供相对于/的位置。它可能类似于:

/home/myusername

答案 1 :(得分:8)

〜是你的主目录,是的。这是非常好的,因为你的主目录并不总是你认为它应该是(/ home /).

另外,有趣的事实是:你可以使用“cd~myuser”来访问用户“myuser”的主目录。

答案 2 :(得分:7)

正如其他人所评论的那样,代字号表示您当前的$HOME目录。这可能与您的用户名~username的值相同或不同。在我的计算机上,$HOME~都引用/work1/jleffler。但是,~jleffler是对NFS安装目录/u/jleffler的引用,如/etc/passwd文件(或任何等效数据库)中所指定 - POSIX标准根据{{定义行为1}}功能;见下文)。我的个人资料仔细设置了getpwnam()。确定哪些软件包使用错误的主目录定义很有趣(也就是恼怒)。

对于大多数人来说,$HOME~的用户名相同,但这不是必需的。鉴于您提出的问题,~username~几乎肯定是相同的。

引用POSIX.1-2008的第2.6.1节“Tilde扩展”:

  

“代字号前缀”由单词开头的不带引号的~username字符,后跟单词中第一个未引用的<tilde>之前的所有字符,或者所有字符组成如果没有<slash>,这个词。 [...]如果登录名为null(即,波浪号前缀仅包含波浪号),则波形前缀将替换为变量HOME的值。如果未设置HOME,则结果未指定。否则,tilde-prefix应替换为与使用<slash>函数[...]获得的登录名关联的初始工作目录的路径名。如果系统无法识别登录名,则结果未定义。

答案 3 :(得分:3)

您可以尝试realpath

realpath ~

答案 4 :(得分:2)

是的,它是您登录的用户的主目录。您可以使用命令pwd(打印工作目录)查看它在文件系统中的位置。

答案 5 :(得分:2)

〜扩展到您的主目录,正如已经指出的那样,但我认为值得注意的是,这不是ssh本身的特性。

ssh(在众多其他精彩功能中!)可让你建立一个远程 shell ,这个shell可以由许多不同的软件提供。

在* nix系统上,您的帐户将与特定的shell相关联,GNU bash是一种受欢迎的选择。它发生在bash和大多数其他POSIX兼容的shell tilde character expands as a shortcut to your home directory

答案 6 :(得分:1)

/是文件系统的根目录 〜/或〜是你的个人资料的根,〜/总是/ home / username

答案 7 :(得分:1)

不同的炮弹可能会或可能不会以不同的方式处理,但是Johnathan在没有出来并说出来的情况下得到了最接近的炮弹。 shell将“〜”扩展为存储在$ HOME环境变量中的任何内容。 shell将~username扩展为给定用户名的/ etc / passwd的shell字段中列出的内容。如果你不覆盖它,shell(或ssh,取决于实现)将$ HOME设置为/ etc / passwd中的home字段,因此它们都是相同的(假设你是“用户名”)直到你换一个。

至于你为什么在ssh中看到〜

提示符说“〜”是您当前的目录,因为您使用Bash作为shell,以及$ PS1的值(您看到的提示字符串 - 它在/ etc / profile或/ etc / profile中设置) .d / *,很可能)在某处包含\ w或\ W.提示中的\ w字符串显示当前目录,当您位于$ HOME指定的目录中时折叠为“〜”。这是从我的homedir开始的一个小小的演示 - 注意“\ w”如何被替换为当前目录或用〜,基于HOME的值被设置为什么。另请注意,尾部斜杠不起作用 - HOME不能以斜杠结束。 :)

danny@machine ~ > export PS1='\w > '     # change my prompt (effective on next line)
~ > cd /tmp                              # move to /tmp to demonstrate
/tmp > export HOME=/tmp/                 # set HOME to include trailing /
/tmp > export HOME=/tmp                  # try again without trailing /
~ >                                      # notice that this works
~ > cd /home/danny                       # back to homedir
/home/danny > export HOME=/home/danny    # see how it's /home/danny, not ~
~ > export PS1='danny@machine \w > '     # after resetting $HOME, it should work ok
danny@machine ~ >                        # hooray!

答案 8 :(得分:1)

〜是您的主目录。要查看路径类型:

echo ~

在终端

答案 9 :(得分:0)

与/相关的家庭不一定总是在同一个地方。这就是〜快捷方式如此有用的原因。回家的路径应该是$ HOME。尝试输入

echo $HOME

答案 10 :(得分:0)

主页目录不一定必须位于/ kigurai指出的位置。