Skip to content
Advertisement

Advantage of $PATH over alias

I am relatively new to Linux and Unix. With the help of the internet I finally figured out how $PATH and aliases in my .bashrc work.

But I really couldn’t find anything that describes when to use which.

Let’s say I installed Python3.3 in Library/Frameworks and the executable is /Library/Frameworks/Python.framework/Versions/3.3/bin/python3, but I want to execute python 3.3 just by typing python3 into my terminal.

When I understand it correctly, there are (at least) three methods to achieve this:

1) I modify $PATH in my .bashrc:

export PATH=/Library/Frameworks/Python.framework/Versions/3.3/bin:${PATH}

2) I set an alias in my .bashrc:

alias python3=/Library/Frameworks/Python.framework/Versions/3.3/bin

3) creating a symbolic link (symlink):

ln -s /Library/Frameworks/Python.framework/Versions/3.3/bin /usr/local/bin

What would you say (from your experience) is the “recommended” way?

Advertisement

Answer

Putting python3 in your path is the correct way to invoke it anywhere you might find yourself in your filesystem. A symbolic link is the best way to change that command to python and keep your scripts non version dependent (you can run a script that depends on python use the symbolic link and a script that needs python 3.0 specifically use python3, even though on your computer they are the same thing). Symbolic links are still files in your filesystem, so they still need to be in your path.

I only see aliases used when you are trying to create some kind of behavior that is different than the default behavior for a command line utility like an alias for ls that adds -a silently.

Also symbolic links are stored in the filesystem so once created they exist for all other users who log in, while aliases only apply to the logged in user who has defined them. They can also have file permissions applied to them.

Here is a fun article about things you can do to your terminal through your .bash_profile including some great aliases.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement