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 revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
nix:pathvars [2020/01/06 15:28] kauffmannix:pathvars [2020/01/06 15:51] 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.
 +
 +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/pages/nix/pathvars.txt · Last modified: 2020/01/06 16:00 by kauffman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki