Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am new to linux and was wondering whether it is possible to create abbreviations that can be used in terminal. I know about alias command, but am not sure whether that can be used for what I am looking for.

Example: Say I often need to copy stuff from folder ~/Dropbox/thisfolder. I know that I can create a shortcut to switch to this folder by creating an alias, such as,

alias tf="cd ~/Dropbox/thisfolder"

However, if I do

alias justpath="~/Dropbox/thisfolder"

then, I cannot use commands such as cp justpath/blahfile ./. Is it possible to do something like this using some other way to abbreviate the path ~/Dropbox/thisfolder?

share|improve this question
Use a variable, e.g. justpath=~/Dropbox/thisfolder then cp $justpath... – Mikel May 18 '12 at 1:29
Awesome! Thanks. – Curious2learn May 18 '12 at 1:34
I use symlinks, which I collect in a "shallow" easily accessible directory, like ~/Desktop. This way the short paths are shell-agnostic. The only caveat is to be careful running recursive commands on the symlink dir (tell them to not follow symlinks). – jw013 May 18 '12 at 1:36
This depends a lot on your shell; there are several good ways in zsh – Michael Mrozek May 18 '12 at 1:41
up vote 6 down vote accepted

In any shell, you can define a variable.


(Note: no quotes here, otherwise the ~ wouldn't be expanded.) Prefix it with a $ to use it:

cp $justpath/blahfile .

Note that unless you're using zsh, if the value contains whitespace or wildcards *?\[, you need to put double quotes around the variable expansion when you use it.

justpath=~/'Dropbox/that folder'
cp "$justpath/blahfile" .

Zsh has (as it often does) better facilities. You can define named directories accessed with the syntax ~foo, generalizing the case where foo is a user name and ~foo is this user's home directory.

alias -d justpath=~/Dropbox/thisfolder
cp ~justpath/blahfile .

And for more complex cases, zsh offers dynamic named directories.

share|improve this answer
Strictly speaking that's not for any shell. In csh the variables are set with the set command. – Alexander Shcheblikin Dec 5 '12 at 20:35
@AlexanderShcheblikin “Shell” in the unix world today (as opposed to 20 years ago) usually means Bourne-style shell by default. Csh, fish, psh, non-command-line shells and so on aren't included. – Gilles Dec 5 '12 at 20:55
I agree, csh is mostly terrible, but "default" and "any" are quite different things anyway. – Alexander Shcheblikin Dec 5 '12 at 22:22

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.