Create another shortcut `~~` like `~` (home directory)
Actually, there is a way, it's not a great way, but it's a way, haha!
Add the following to your /etc/passwd
file:
~:x:1111:99:special Character user:/test:/sbin/nologin
replace the 1111
as the UID with something that makes sense, replace /test
with the directory you want ~~ to mimic.
99
on my system is the nobody
group I recommend if you do do this to make sure it's a group with NO permissions on any file that will ever get used. Theoretically with /sbin/nologin
as the shell, it should not be able to be used, it also will not have an /etc/shadow
entry so it won't have a password. Theoretically should be fine, but make sure that it doesn't somehow let you log in as the account.
As a side note: I am not in any way saying this is a good idea, but it will accomplish the functionality that you want.
EDIT: For completeness’ sake this was suggested by VarunAgw:
You could add the user as normal with useradd -s /sbin/nologin -N tmp
and then modify /etc/passwd
and /etc/shadow
to change the user tmp
to ~
and change the location of the home directory
You can make use of CDPATH and put a directory literally named ~~
in one of your CDPATH components.
From man bash
(but CDPATH is available even in sh
)
The search path for the cd command. This is a colon-separated list of directories in which the shell looks for destination directories specified by the cd command. A sample value is ".:~:/usr".
That will allow you to do cd ~~
.
If you want to do things like vi ~~/someFile
from anywhere in the directory tree, then you're out of luck if you insist on ~~
literally unless you hack your shell, however, you can use variables or environment variable to store your magic directories so you can do, e.g, $tilda/someFile
I usually put often-accessed files inside shortly named directories in my home directory so I can access them with paths such as ~/b
or ~/l
.
Naturally, you can usually replace directories with symlinks to directories as much as you want.