≡ Menu

TCSH / CSH Shell Set PATH Variable

I am a new Unix / Linux / Apple OS X user. What is my path in CSH / TCSH shell? How do I set or modify path in c shell (CSH) on Unix like operating systems?

The PATH is an environment variable. It is a colon delimited list of directories that your shell searches through when you enter a command. All executables are kept in different directories on the Linux and Unix like operating systems. A search path is the sequence of directories in which the c shell (CSH/TCSH) looks for commands to execute.

Print current PATH settings in C SHELL

Open the terminal and type the following command to print the current $PATH settings. You can use any one of the following command:

echo $PATH

OR

printenv PATH

Sample outputs:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/sbin/modemZapp:/Users/vivek/gcutil-1.8.4

The character between each directory in the C shell’s the PATH environment variable has colons. You can also use the following $path variable:

echo $path

Sample outputs:

/usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/X11/bin /usr/local/sbin/modemZapp /Users/vivek/gcutil-1.8.4

The character between each directory in the C shell’s $path variable is a space. The C shell search path includes /usr/bin, /bin, /usr/sbin, and rest of the all directories displayed by the echo command.

Method #1: CSH / TCSH set path variable command for interactive use

You can add a directory called /usr/local/bin and $HOME/bin to to the search path by entering the following command:

### *** NOTE: $path is case sensitivity and must be in lowercase *** ###
set path = ($path /usr/local/bin)
echo $path

Sample outputs:

/usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/X11/bin /usr/local/sbin/modemZapp /Users/vivek/gcutil-1.8.4 /usr/local/bin

All directories are searched in the order they appear in the search path. Setting paths with $path variable is recommended for all your shell commands that you type directly. You can add second path using the same syntax:

### *** NOTE: $path is case sensitivity and must be in lowercase *** ###
set path = ($path /usr/local/bin $HOME/bin)
echo $path

Sample outputs:

/usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/X11/bin /usr/local/sbin/modemZapp /Users/vivek/gcutil-1.8.4 /usr/local/bin /Users/vivek/bin

Method #2: Csh/Tcsh add to $PATH

You can use the following syntax:

## please note 'PATH' is CASE sensitivity and must be in UPPERCASE ##
setenv PATH $PATH\:/dir/path1
setenv PATH $PATH\:/dir/path1\:/dir/path2

Please feel free to replace /dir/path1 with the directory you want the shell to search. If you skip \ before :, you will get an error message that read as follows:

Bad : modifier in $ (/).

How do I set path in tcsh/csh automatically on Unix/Linux?

You may want to set search path automatically each time you log in by appending any one of the following command in ~/.login or ~/.cshrc file (you need to type the command at shell prompt):

## command to append path settings in ~/.login file ##
echo 'set path = ($path /usr/local/bin $HOME/bin .)' >> ~/.login

OR

## command to append path settings in ~/.cshrc file ##
echo 'setenv PATH $PATH\:/usr/local/bin\:$HOME/bin\:.'  >> ~/.cshrc

See csh(1) and tcsh(1) man page for more information.

{ 4 comments… add one }
  • Sharath July 3, 2014, 3:58 pm

    I think method #2 has a typo. I tried and it doesn’t work.
    Here’s what works for me (Notice the additional ‘\’ character in the expression.)
    setenv PATH $PATH\:/dir/path

    • manas January 18, 2016, 3:37 pm

      Man ,Sharath u da man

      Its absolutely right .. WIthout the \ , u are doomed with following output :

      ecamolx1820.mo.ca.am.ericsson.se{xmomana}61: setenv PATH $PATH:/usr/bin
      Bad : modifier in $ (/).

      • Vivek Gite January 18, 2016, 9:32 pm

        The FAQ has been updated. Thanks for the heads up!

  • joseph veliz March 31, 2016, 8:56 pm

    set path = ( $path usr/local/bxh/bin )

    does not set path, when I check with echo $path

    I have other paths set and they work ok.

    But when I go far back as usr/ , the path is not set

    Any help is appreciated

    thanks
    Mac OSX 10.6.8

Leave a Comment


   Tagged with: , , , , , , , , ,