zsh tilde(〜)在OS X上的扩展方式不同

时间:2014-03-27 21:55:23

标签: git ssh zsh

不确定是什么导致这个...

system:OSX 10.9.2 shell:zsh与tmux中的oh-my-zsh

> echo $HOME
/Users/xxmplus
> echo ~
/Users/xxmplus
> echo ~xxmplus
/home/xxmplus

这很烦人,因为我的ssh无法正常工作......

> ssh -T xxmplus@github.com
Could not create directory '/home/xxmplus/.ssh'.
The authenticity of host 'github.com (192.30.252.129)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/xxmplus/.ssh/known_hosts).
Hi xxmplus! You've successfully authenticated, but GitHub does not provide shell access.

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

最可能的原因是用户数据库中定义的主目录与您的配置文件和登录脚本设置为$HOME的主目录不同。

至于,

> echo $HOME
/Users/xxmplus
> echo ~
/Users/xxmplus

以上内容严格按照规范,在POSIX中将一个独立的~简单定义为$ HOME,因此证明不多。

但这有所不同:

> echo ~xxmplus
/home/xxmplus

规范说明如下,

  

... tilde-prefix应替换为与使用getpwnam()获取的登录名关联的初始工作目录的路径名...如果系统无法识别登录名,则结果未定义< / p>

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_01

所以另一个非常不可能的选择是你遇到了规范的未定义行为部分 - 这可能是在框中无法识别登录名(xxmplus)的情况,具体而言,无法通过{获得它{3}},但更简单的解释是它就在那里,您只需更改用户数据库中的主目录。