Aliases vs Symbolic link - Lab 12.1
Lab 12.1 Deploying aliases suggests as solution
$ alias PROJECT ‘cd /home/staff/RandD/projects/projectX/src’
I wonder if the same result could have been achieved with a symbolic link
$ ln-s /home/staff/RandD/projects/projectX PROJECTsymboliclink
What is the difference between an alias and a Symbolic link?
Sincerely,
Josep Maria
Comments
-
You are correct that the end result would be the same in this situation of using the above alias and the above symbolic link. Name something you want to do, and we can probably come up with at least 5 different ways to do it. The thing is, in practice, what is the best way for you to use?
Again, we are talking about:
An alias:
$ alias PROJECT ‘cd /home/staff/RandD/projects/projectX/src’
and a symbolic link:
$ ln -s /home/staff/RandD/projects/projectX/src ~/PROJECT # I altered your line a littleFirst off, to use the alias, we can be anywhere in the filesystem. We could be in /tmp, for example and just type:
$ pwd # Print Working Directory /tmp $ PROJECT # The alias is a command that changes your working directory $ pwd /home/staff/RanD/projects/projectX/src
So, by executing the alias, PROJECT, you have changed your working directory from wherever you were to where the alias changed your working directory to be. The thing is an alias can be any command that you wanted it to be. It could have been something that a developer/programmer may have found useful like:
$ alias PROJECT 'cd /home/staff/RandD/projects/projectX/src; make all; make install'
Beyond the scope of this class, the "make" command is used to run commands (from a "Makefile") that usually does things like compiles programs and installs binaries into system directories. Like I said way beyond the scope of this class, but something fitting a project source directory. So, an alias is a command (or set of commands) that you are creating a "short-cut" for. It is much easier for you to type "PROJECT" rather than "cd /home/staff/RandD/projects/projectX/src; make all; make install" in the above example. This is especially true if you are typing the command many, many times during the day or week.
A symbolic link is a special file in your filesystem. It, too, is a "short-cut" for a filesystem reference, but it doesn't allow you to execute commands. It "symbolically" "points" (sorry for all the quotes) to something in the filesystem. So, going back to the original example and your question:
$ ln -s /home/staff/RandD/projects/projectX/src ~/PROJECT
This creates a special file in the filesystem located in your $HOME or login directory (~) called PROJECT. If you use this file name in various commands, it is the same as if you used what it points to (with certain exceptions):
$ cd /home/staff # or ~ in this case $ ls PROJECT # since you are in ~, you are referencing the file PROJECT in your $HOME directory <results of an "ls" of /home/staff/RandD/projects/projectX/src> $ cd /tmp $ pwd /tmp $ ls PROJECT <probably something along the lines of "file not found" unless there just happened to be a /tmp/PROJECT file> $ cd ~/PROJECT # this would be the equivalence of the alias, but note that you have to type the command $ pwd /home/staff/RandD/projects/projectX/src $
So, again, you can essentially use either, but the alias is a command, and the symbolic link is a special file in the filesystem that points to something.
0 -
@KevinCSmallwood thank you for your time and valuable explanations.
Your answer is a true master class. I really appreciate it.Now I understand the difference between aliases and symbolic links.
Sincerely,
Josep Maria1
Categories
- All Categories
- 178 LFX Mentorship
- 178 LFX Mentorship: Linux Kernel
- 772 Linux Foundation IT Professional Programs
- 382 Cloud Engineer IT Professional Program
- 175 Advanced Cloud Engineer IT Professional Program
- 75 DevOps IT Professional Program - Discontinued
- 7 DevOps & GitOps IT Professional Program
- 102 Cloud Native Developer IT Professional Program
- 7.6K Training Courses & Learning Paths
- 9 AI & ML Training
- 1 Blockchain & Decentralized Identity Training
- 28 Cloud & Containers Training
- 3 Cybersecurity Training
- 2 DevOps & Site-Reliability Training
- 1 Linux Kernel Development Training
- 2 Networking Training
- 2 Open Source Best Practice Training
- 5 System Administration Training
- 1 System Engineering Training
- 4 Web & Application Development Training
- 797 Hardware
- 202 Drivers
- 68 I/O Devices
- 37 Monitors
- 96 Multimedia
- 173 Networking
- 91 Printers & Scanners
- 91 Storage
- 771 Linux Distributions
- 81 Debian
- 68 Fedora
- 23 Linux Mint
- 13 Mageia
- 24 openSUSE
- 151 Red Hat Enterprise
- 31 Slackware
- 13 SUSE Enterprise
- 356 Ubuntu
- 469 Linux System Administration
- 31 Cloud Computing
- 73 Command Line/Scripting
- Github systems admin projects
- 101 Linux Security
- 79 Network Management
- 101 System Management
- 46 Web Management
- 146 Mobile Computing
- 20 Android
- 111 Development
- 1.2K New to Linux
- 1K Getting Started with Linux
- 403 Off Topic
- 126 Introductions
- 33 Study Material
- 1K Programming and Development
- 310 Kernel Development
- 716 Software Development
- 1K Software
- 416 Applications
- 182 Command Line
- 5 Compiling/Installing
- 71 Games
- 320 Installation
- Archived
- 183 Small Talk
- 2 LFD140 Class Forum
- 1.4K LFS258 Class Forum
Upcoming Training
-
August 20, 2018
Kubernetes Administration (LFS458)
-
August 20, 2018
Linux System Administration (LFS301)
-
August 27, 2018
Open Source Virtualization (LFS462)
-
August 27, 2018
Linux Kernel Debugging and Security (LFD440)
