I had always thought that $HOME
and ~
were exactly the same and thus could
be used interchangeably. Today, when I tried to install pylibmc, a python
binding to memcached, on my shared server the use of ~
gave me error but not
$HOME
. I would like to reason out why.
libmemcached is a requirement for pylibmc. I have libmemcached installed
under my home directory because I have no root on the server. As a result, to
install pylibmc, I need to make sure the installation script knows where to
find libmemcached.
When executing python setup.py install --with-libmemcached=~
, the installation
script runs
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall
-Wstrict-prototypes -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
which gives the errors that libmemcached can't be found.
If I change to --with-libmemcached=$HOME
, the script runs
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall
-Wstrict-prototypes -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
without any problem. It looks like the problem is that tilde doesn't get resolved. But why?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…