nix:pathvars
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
nix:pathvars [2020/01/06 12:42] – created kauffman | nix:pathvars [2020/01/06 16:00] (current) – kauffman | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
- | Work in progress. | + | I'm not sure how one first gets exposed to path variables, only that it can be confusing at first glance. This document tries to remedy that without going into the history of **everything**. |
+ | |||
+ | |||
+ | ===== The linux file system ===== | ||
+ | What you need to know: | ||
+ | |||
+ | There are various directories that follow this pattern **[not limited to]**: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | The directories can exist inside of any directory path. There are the usual ones you may have seen already: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ===== Path Search ===== | ||
+ | Ever wonder what happens when you type in a command ('' | ||
+ | |||
+ | Assuming the command is not a shell command, the shell will check the appropriate variable which includes search locations to launch the program you wish to execute. | ||
+ | |||
+ | In our example, '' | ||
+ | |||
+ | We can find out where it by using the command '' | ||
+ | < | ||
+ | user@linux1: | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | ===== Intro the the PATH variable ===== | ||
+ | |||
+ | Generally your search path for binaries will look something like the below. | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | We can see what is in our path variable by using the command '' | ||
+ | |||
+ | < | ||
+ | user@linux1: | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | When a search occurs it will take the left most path, search that directory, then proceed to the next path to its right IF and ONLY IF it does not find what it is looking for in the directory it is currently searching. | ||
+ | |||
+ | Fore example: Lets take a look at the executable '' | ||
+ | |||
+ | '' | ||
+ | < | ||
+ | user@linux1: | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | There also exists and pip executable in '' | ||
+ | |||
+ | |||
+ | ===== Setting up an Example ===== | ||
+ | |||
+ | Your shell will allow you manipulate the order in which these paths appear. It's as simple as setting a variable. | ||
+ | |||
+ | For the following examples I assume you are using the bash shell, which is the default in CS. The concept will translate to other shells, though the syntax may be different. | ||
+ | |||
+ | A common example to manipulate your path is if you have written a script and you'd like to invoke it without providing the full path: | ||
+ | |||
+ | Lets create the directory '' | ||
+ | < | ||
+ | user@linux1: | ||
+ | </ | ||
+ | |||
+ | We will place our example script that echo's 'Hello World!' | ||
+ | < | ||
+ | # | ||
+ | echo 'Hello World!' | ||
+ | </ | ||
+ | |||
+ | and make it executable. | ||
+ | < | ||
+ | user@linux1: | ||
+ | </ | ||
+ | |||
+ | Now that we have our executable '' | ||
+ | |||
+ | As you may have guessed we will want to add (pre or postpend) '' | ||
+ | |||
+ | ===== Manipulating the PATH variable ===== | ||
+ | |||
+ | < | ||
+ | $ export PATH=$PATH: | ||
+ | </ | ||
+ | |||
+ | To test we will need the shell to reevaluate $PATH. | ||
+ | < | ||
+ | $ hash -r | ||
+ | </ | ||
+ | |||
+ | Now we can see that '' | ||
+ | < | ||
+ | user@linux1: | ||
+ | / | ||
+ | |||
+ | user@linux1: | ||
+ | Hello World! | ||
+ | </ | ||
+ | |||
+ | ===== Making the change permanent ===== | ||
+ | Add the following line to a file called '' | ||
+ | |||
+ | | ||
+ | |||
+ | This will postpend our custom path to the search path every time we launch a bash login shell. You can replace '' | ||
+ | |||
+ | If you'd like to prepend just move your path in front of '' | ||
+ | |||
+ | export PATH=$HOME/ |
/var/lib/dokuwiki/data/pages/nix/pathvars.txt · Last modified: 2020/01/06 16:00 by kauffman