我一直以为$HOME并且~是完全相同的,因此可以互换使用。今天,当我尝试在共享服务器上安装与memcached的python绑定 pylibmc时 ,使用的~错误给了我,但没有给我 $HOME。我想说明原因。
$HOME
~
libmemcached 是 pylibmc 的要求。我在主目录下安装了 libmemcached, 因为服务器上没有root。结果,要安装 pylibmc ,我需要确保安装脚本知道在哪里可以找到 libmemcached 。
执行时python setup.py install --with-libmemcached=~,安装脚本运行
python setup.py install --with-libmemcached=~
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall \ -严格的原型-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,脚本将运行
--with-libmemcached=$HOME
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall \ -严格的原型-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会替换~为用户的主目录( update ;或者,如果其他用户的主目录~后跟a ,则替换其他用户的主目录/),但前提是它是单词的第一个字符。
/
--with-libmemcached=~``~在一开始就没有,所以外壳不理会它。
--with-libmemcached=~``~