Difference between $HOME and '~' (tilde)?
bash, centos, linux
Solution
The shell replaces `~` with the user's home directory (update: or perhaps by the home directory of some other user, if `~` is followed by something other than a `/`), but only if it's the first character of a word.
`--with-libmemcached=~` has `~` not in the beginning, so the shell leaves it alone.
Problem
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?