Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ondir(1)			  Shell utility 			ondir(1)

NAME
     ondir  -  automatically  execute scripts when traversing directories at the
     command line

SYNPOSIS
     ondir <old-directory> [<new-directory>]

DESCRIPTION
     NOTE: The 0.2.x series has been completely rewritten in C. In addition, the
     configuration file format is substantially different.

     ondir is a program that executes a script when entering or leaving a direc-
     tory. It also executes all scripts in the intermediate directories  between
     the two.

     For  example,  when  changing  from  /opt/music to /home, leave scripts for
     /opt/music and /opt are executed, then the enter script for /home	is  exe-
     cuted.

     The scripts are defined in either the system-wide rc file (/etc/ondirrc) or
     per user rc files (~/.ondirrc).

     The  way  ondir  works  is  by  using auxiliary scripts that override shell
     builtins (cd, pushd and popd in BASH) to  execute	ondir  whenever  a  user
     changes  directory.  These scripts are included in the section SCRIPTS, be-
     low.

     The scripts are available in the source tarball and are called  scripts.sh,
     scripts.tcsh for Bourne shell variants and TCSH, respectively.

OPTIONS
     <old-directory>
	    The  last directory you were in, after having changed to the new di-
	    rectory.

     [<new-directory>]
	    The current directory. This is optional, but can be useful when tra-
	    versing symbolically linked paths, as it will use the  logical  path
	    rather than the physical path. If left out, ondir uses getcwd().

CONFIGURATION
     The configuration files /etc/ondirrc and ~/.ondirrc are in the form:

     # Comment
     [final] enter <path>[:<path>[:...]]
	  <shell script body>
     [final] leave <path>[:<path>[:...]]
	  <shell script body>

     Any line with leading whitespace is assumed to belong to the last valid en-
     ter or leave section.

     final  indicates  that  the  section  will be the last one executed for the
     matching directory. Directories further down the hierarchy  will  still  be
     matched.

     <path>  is  the path to match. Regular expression support has been included
     since version 0.2.1 thanks to Arvind (?). A path must match  completely  to
     be  considered a match. Because : is the path delimiter, it can not be used
     in any regular expressions.

     Arvind also re-added (from version 0.1.x) support for  $ONDIRWD  expansion.
     This  environment	variable will contain the directory currently being tra-
     versed.

     A perfect example of the usefulness of this program is a users  public_html
     directory.

     I	personally  set  my  default  umask  to 077, but when editing in my pub-
     lic_html directory I want my umask to be 022. To do this  automatically,  I
     would have add the following to my ~/.ondirrc

     ~/.ondirrc
	    enter /home/athomas/public_html
		 umask 022
	    leave /home/athomas/public_html
		 umask 077

     Another  good  example  is  if you have a "bin" directory in a project, but
     don't want to add it permanently to your PATH. The following ondir  scripts
     take care of that:

     ~/.ondirrc
	    enter /home/athomas/projects/myproject
		 PATH=$PATH:$CWD/bin
	    leave /home/athomas/projects/myproject
		 PATH=`echo $PATH | sed -e "s,:$CWD/bin,,g"`

SCRIPTS
     The BASH script you should add to your profile is:

     cd()
     {
	 builtin cd "$@" && eval "`ondir \"$OLDPWD\" \"$PWD\"`"
     }
     pushd()
     {
	 builtin pushd "$@" && eval "`ondir \"$OLDPWD\" \"$PWD\"`"
     }
     popd()
     {
	 builtin popd "$@" && eval "`ondir \"$OLDPWD\" \"$PWD\"`"
     }
     eval "`ondir /`"

     The TCSH script you should add to your profile is:

     alias cwdcmd eval \`ondir \$owd \$cwd\`
     # Run ondir on login
     eval `ondir /`

AUTHORS
     Alec Thomas <alec@swapoff.org>

SEE ALSO
     devtodo(1) <http://swapoff.org/DevTodo>

NOTES
     ondir also has the ability to execute scripts in the directories being tra-
     versed. These scripts are named .onenter and .onleave. This ability is dis-
     abled by default, but can be enabled by editing conf.h and uncommenting:

     #define USE_ONENTERLEAVE

Alec Thomas			      0.2.3				ondir(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ondir&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help