2

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.

6
  • 7
    Bad idea, that will break stuff. If you want: unix.stackexchange.com/questions/103666/…
    – Tim
    Aug 26, 2014 at 11:08
  • 1
    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. Aug 26, 2014 at 11:09
  • 2
    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 :) Aug 26, 2014 at 11:11
  • What does CTF stand for? Aug 26, 2014 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, 2014 at 19:34

2 Answers 2

5

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

Try the following commands:

echo ~
HOME=foo
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.

1
  • 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 :) Aug 26, 2014 at 11:17
3

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.

8
  • 2
    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, 2014 at 11:13
  • I didn't get what you are saying, can you explain it in more detail Aug 26, 2014 at 11:18
  • In your .bashrc file in /home/username Aug 26, 2014 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, 2014 at 11:20
  • 1
    I referenced, and I gave a good answer - meta.askubuntu.com/questions/11720/…
    – Tim
    Aug 26, 2014 at 11:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .