一尘不染

$ HOME和'〜'(波浪号)之间的区别?

linux

我一直以为$HOME并且~是完全相同的,因此可以互换使用。今天,当我尝试在共享服务器上安装与memcached的python绑定
pylibmc时 ,使用的~错误给了我,但没有给我 $HOME。我想说明原因。

libmemcachedpylibmc 的要求。我在主目录下安装了 libmemcached, 因为服务器上没有root。结果,要安装
pylibmc ,我需要确保安装脚本知道在哪里可以找到 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,脚本将运行

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

没有任何问题。看来问题是波浪号没有得到解决。但为什么?


阅读 440

收藏
2020-06-03

共1个答案

一尘不染

Shell会替换~为用户的主目录( update ;或者,如果其他用户的主目录~后跟a
,则替换其他用户的主目录/),但前提是它是单词的第一个字符。

--with-libmemcached=~``~在一开始就没有,所以外壳不理会它。

2020-06-03