Siempre he pensado que $HOME
y ~
son exactamente iguales y, por lo tanto, podrían usarse de manera intercambiable. Hoy, cuando intenté instalar pylibmc, un pitón vinculando a memcached, en mi servidor compartido el uso de ~
me dio error pero no $HOME
. Me gustaría razonar por qué.
libmemcached es un requisito para pylibmc. Tengo libmemcached instalado en mi directorio principal porque no tengo una raíz en el servidor. Como resultado, para instalar pylibmc, necesito asegurarme de que el script de instalación sabe dónde encontrar libmemcached.
Al ejecutar python setup.py install --with-libmemcached=~
, el script de instalación se ejecuta
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
que da los errores que libmemcached no se puede encontrar.
Si cambio a --with-libmemcached=$HOME
, el script se ejecuta
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
sin ningún problema. Parece que el problema es que tilde no se resuelve. ¿Pero por qué?
Considero que tilde es una conveniencia de línea de comandos. En las secuencias de comandos, '$ HOME' siempre se debe usar en su lugar. –