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
       directory. 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
       executed.

       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,
       below.

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

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

       [<new-directory>]
	      The current directory. This is optional, but can be useful  when
	      traversing 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
       enter 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  in-
       cluded since version 0.2.1 thanks to Arvind (?).	A path must match com-
       pletely 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	expan-
       sion. This environment variable will contain  the  directory  currently
       being traversed.

       A  perfect  example  of	the usefulness of this program is a users pub-
       lic_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
       traversed.  These scripts are named .onenter and	.onleave. This ability
       is disabled by default, but can be enabled by editing conf.h and	uncom-
       menting:

       #define USE_ONENTERLEAVE

Alec Thomas			     0.2.3			      ondir(1)

NAME | SYNPOSIS | DESCRIPTION | OPTIONS | CONFIGURATION | SCRIPTS | AUTHORS | SEE ALSO | NOTES

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

home | help