Avevo sempre pensato che $HOME
e ~
fossero esattamente gli stessi e quindi potesse essere usato in modo intercambiabile. Oggi, quando ho provato a installare pylibmc, un python vincolante per memcached, sul mio server condiviso l'uso di ~
mi ha dato errore ma non $HOME
. Mi piacerebbe capire perché.
libmemcached è un requisito per pylibmc. Ho libmemconnected installato nella mia directory home perché non ho root sul server. Di conseguenza, per installa pylibmc, ho bisogno di assicurarmi che lo script di installazione sappia dove trovare trovare libmemconnected.
Quando si esegue python setup.py install --with-libmemcached=~
, lo script di installazione corre
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
che dà gli errori che libmemcached non può essere trovato.
Se cambio al --with-libmemcached=$HOME
, lo script viene eseguito
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
senza alcun problema. Sembra che il problema sia che la tilde non viene risolta. Ma perché?
Ritengo che la tilde sia una comodità da linea di comando. Negli script, invece, deve essere sempre usato $ HOME. –