User Tools

Site Tools


nix:pathvars

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
nix:pathvars [2020/01/06 15:28]
kauffman
nix:pathvars [2020/01/06 16:00] (current)
kauffman
Line 36: Line 36:
 </​code>​ </​code>​
  
-==== Intro the the PATH variable ====+===== Intro the the PATH variable ​=====
  
 Generally your search path for binaries will look something like the below. Generally your search path for binaries will look something like the below.
Line 63: Line 63:
  
  
 +===== 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 ''​%%bin%%''​ in the root of our home directory:
 +<​code>​
 +user@linux1:​~$ mkdir ~/bin
 +</​code>​
 +
 +We will place our example script that echo's 'Hello World!'​ into ''​%%~/​bin/​hello%%''​
 +<​code>​
 +#!/bin/bash
 +echo 'Hello World!'​
 +</​code>​
 +
 +and make it executable.
 +<​code>​
 +user@linux1:​~$ chmod +x ~/bin/hello
 +</​code>​
 +
 +Now that we have our executable ''​%%hello%%''​ we'd like to be able to call it without prepending the path like this: ''​%%~/​bin/​hello%%''​
 +
 +As you may have guessed we will want to add (pre or postpend) ''​%%~/​bin%%''​ to our ''​%%PATH%%''​ variable.
 +
 +===== Manipulating the PATH variable =====
 +
 +<​code>​
 +$ export PATH=$PATH:​~/​bin
 +</​code>​
 +
 +To test we will need the shell to reevaluate $PATH.
 +<​code>​
 +$ hash -r
 +</​code>​
 +
 +Now we can see that ''​%%hello%%''​ is in our path and we can execute it without the full path.
 +<​code>​
 +user@linux1:​~$ which hello 
 +/​home/​user/​bin/​hello
 +
 +user@linux1:​~$ hello
 +Hello World!
 +</​code>​
 +
 +===== Making the change permanent =====
 +Add the following line to a file called ''​%%~/​.bash_profile%%''​.
 +
 +   ​export PATH=$PATH:​$HOME/​bin
 +
 +This will postpend our custom path to the search path every time we launch a bash login shell. You can replace ''​%%$HOME/​bin%%''​ with any path you wish and add as many paths as you want at once.
 +
 +If you'd like to prepend just move your path in front of ''​%%$PATH%%''​. Just make sure each path is separated by a colon ''​%%:​%%''​.
  
 +    export PATH=$HOME/​bin:​$PATH
  
/var/lib/dokuwiki/data/attic/nix/pathvars.1578346097.txt.gz · Last modified: 2020/01/06 15:28 by kauffman