当我input'cd〜'时什么目录是'〜'?

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

Solutions Collecting From Web of "当我input'cd〜'时什么目录是'〜'?"

〜是当前登录的用户主目录的别名。 要找到真正的位置,请在登录后键入pwd (代表:打印工作目录),这应该给您相对于/的位置。 这可能是这样的:

 /home/myusername 

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

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

正如其他人所评论的,代字号表示您当前的$HOME目录。 这可能与您的用户名的~username的值相同也可能不相同。 在我的机器上, $HOME~都指向/work1/jleffler 。 然而, ~jleffler是在/etc/passwd文件(或任何等价的数据库)中指定的NFS挂载目录/u/jleffler ,POSIX标准根据getpwnam()函数定义了行为;请参见下文)。 我的个人资料仔细设置$HOME 。 找出哪些软件包使用主目录的错误定义是一件有趣的事情(又叫恼怒)。

对于大多数人来说, ~~username对于他们的用户~username是相同的,但这不是必需的。 考虑到你提出的问题,几乎可以肯定的是~~username是一样的。

来自POSIX.1-2008第2.6.1节“Tilde Expansion”的引用:

一个“撇号前缀”由一个单词开头的一个未加引号的<tilde>字符组成,后跟该单词中第一个未加引号的<slash>之前的所有字符,或者如果没有<slash> 。 […]如果登录名为空(即,代字符前缀仅包含代字号),则代字号前缀被替换为变量HOME的值。 如果HOME未设置,则结果未指定。 否则,应该用与使用getpwnam()函数[…]获得的登录名关联的初始工作目录的路径名取代波浪前缀。 如果系统不能识别登录名,结果是不确定的。

你可以尝试realpath

 realpath ~ 

是的,这是您登录的用户的主目录。 您可以使用命令pwd (print working directory)来查看它在文件系统上的位置。

正如已经指出的那样,扩展到你的主目录,但是我认为值得注意的不是ssh本身的功能。

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

在一个* nix系统上,你的账户将与一个特定的shell相关联, GNU bash是一个流行的选择。 这种情况比在bash和大多数其他符合POSIX标准的shell中发生, 代字符字符扩展为主目录的快捷方式 。

/是文件系统的根目录〜/或〜是您的配置文件的根目录〜/始终是/ home / username

不同的炮弹可能会或可能不会以不同的方式处理,但是约翰森却没有出来说出这样的话。 shell将“〜”扩展到存储在$ HOME环境变量中的任何东西。 shell将给出的用户名扩展到/ etc / passwd的shell字段中列出的任何用户名。 如果你不覆盖它,shell(或者ssh,取决于实现)将把$ HOME设置为/ etc / passwd中的home字段,所以它们都是相同的(假设你是“username”)直到你改变一个。

至于你为什么在ssh看到〜

提示符“〜”是当前目录最有可能是因为你使用Bash作为你的shell,$ PS1的值(你看到的提示字符串 – 它设置在/ etc / profile或者/etc/profile.d/中*,更可能)在某处包含\ w或\ W。 提示中的\ w字符串显示当前目录,当您位于$ HOME指定的目录中时,会折叠为“〜”。 这是一个在我的homedir开始的小演示 ​​- 请注意,如何根据HOME的值设置为“\ w”替换为当前目录或〜。 另外请注意,尾部的斜线不起作用 – 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! 

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

 echo ~ 

在终端

和家有关,并不总是在同一个地方。 这就是为什么〜捷径非常有用。 到家的路径应该在$ HOME。 尝试打字

echo $HOME

如kigurai指出的,家庭目录不一定在/ home下。