Sign up ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free.

by default ~ is given the value of /home/username/

i.e. If I use the command cd ~ it goes to the directory /home/username/

How to change the value of it to some other file such as /home/username/filename?

I do know that this can be dangerous, I am working on a CTF though, so it is fine.

share|improve this question
Bad idea, that will break stuff. If you want:… – Tim Aug 26 '14 at 11:08
Do you want to move your user home directory to another location? Otherwise I don't see what the purpose of your endeavour would be. You could set the environment variable HOME to something else, but that will break stuff… badly. – David Foerster Aug 26 '14 at 11:09
I am aware of it I just need the command :) I won't use it to break any thing I am working on a CTF :) – Tummala Dhanvi Aug 26 '14 at 11:11
What does CTF stand for? – Eric Wilson Aug 26 '14 at 17:54
@EricWilson From OP's comment on Tim's post, I guess it is "Capture the Flag". Perhaps OP is participating in some Unix golf contest. – muru Aug 26 '14 at 19:34

2 Answers 2

up vote 4 down vote accepted

The tilde (~) is interpreted by your shell, as a short form of $HOME.

Try the following commands:

echo ~
echo ~

This should first print your real home directory and afterwards "foo", as you set $HOME` to that.

The default value of $HOME comes from you system configuration. Use getent passwd to list all known users and their home directories. Depending on your system configuration those entries might come from /etc/passwd or any remote directory service.

If you only want to temporarily redefine your home directory, just set another $HOME.

If you permanently want to change it you have to change the passwd entry, e.g. by manually editing /etc/passwd.

Taken from this U&L question.

share|improve this answer
Tq I have got the flag in ctf :) from the link you suggested me is unix stack exchange form :) which is same as the answer :) – Tummala Dhanvi Aug 26 '14 at 11:17

Try to change the $HOME variable , because tilde (~) is a short form of $HOME, or change your user's home directory in /etc/passwd but that's not recommended.

Why you don't try to make and alias for cd /home/username/filename like this:

alias documents='cd ~/Documents'

Now when you type documents it will change to /home/user/Documents

More info in man alias.

To make that alias permanent, check this question.

share|improve this answer
Where would you put the alias? Because if I put it in /, it only works (cd aliasname) when I am there, etc. I can't put it everywhere. – Tim Aug 26 '14 at 11:13
I didn't get what you are saying, can you explain it in more detail – Tummala Dhanvi Aug 26 '14 at 11:18
In your .bashrc file in /home/username – John Kirchner Aug 26 '14 at 11:19
Can you edit it to explain how to do this? To me an alias is a symbolic link (made with the ln command. – Tim Aug 26 '14 at 11:20
I referenced, and I gave a good answer -… – Tim Aug 26 '14 at 11:36

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.