我一直以为$HOME
和~
完全相同,因此可以
可以互换使用。今天,当我尝试安装pylibmc时,一个python
绑定(bind)到memcached,在共享服务器上使用~
给了我错误,但没有$HOME
。我想说明原因。
libmemcached是pylibmc的要求。我已经安装了libmemcached
在我的主目录下,因为我在服务器上没有root。结果,
安装pylibmc,我需要确保安装脚本知道在哪里
找到libmemcached。
执行python setup.py install --with-libmemcached=~
时,安装
脚本运行
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall\
-严格的原型(prototype)-fPIC -DUSE_ZLIB -I〜/include\
-I/usr/local/include/python2.7 -c _pylibmcmodule.c\
-o build/temp.linux-i686-2.7/_pylibmcmodule.o -fno-strict-aliasing
这给出了找不到libmemcached的错误。
如果我更改为--with-libmemcached=$HOME
,脚本将运行
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall\
-严格的原型(prototype)-fPIC -DUSE_ZLIB -I/home/waterbotte/include\
-I/usr/local/include/python2.7 -c _pylibmcmodule.c\
-o build/temp.linux-i686-2.7/_pylibmcmodule.o -fno-strict-aliasing
没有任何问题。看来问题是波浪号没有得到解决。但为什么?
最佳答案
Shell会将~
替换为用户的主目录(更新;或者,如果其他~
后跟/
以外的其他用户,则替换其他用户的主目录),但前提是它是单词的第一个字符。--with-libmemcached=~
的开头不是~
,因此shell不用理会它。
关于linux - $ HOME和 '~'(波浪号)之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11587343/