Разница между $HOME и ' ~' (тильда )?

Я всегда думал, что $HOMEи ~абсолютно одинаковы и, следовательно, могут использоваться взаимозаменяемо. Сегодня, когда я попытался установить pylibmc , привязка к memcached, на моем общем сервере использование ~дало мне ошибку, но не $HOME. Я хотел бы объяснить, почему.

libmemcached требуется для pylibmc . У меня установлена ​​libmemcached в моем домашнем каталоге, потому что у меня нет root на сервере. В результате к install pylibmc , мне нужно убедиться, что сценарий установки знает, куда найти libmemcached .

При выполнении python setup.py install --with-libmemcached=~установка скрипт работает

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

который дает ошибки, что libmemcached не может быть найден.

Если я перейду на --with-libmemcached=$HOME, скрипт запустится

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

без каких-либо проблем. Похоже, проблема в том, что тильда не разрешается. Но почему?

60
задан Steven Penny 2 January 2014 в 05:24
поделиться