Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  PROJECT_BIN (1)

.ds Aq ’


project_bin - Call a Dir::Project specific program



  [program] [program_arguments]
  [program] --project_bin-help
  [program] --project_bin-which
  project_which [program]

  # Example script dispatching
  cd ~/project1
  project_dir --project
  my_tool my_args....   # Executes project1/.../my_tool

  cd ~/project2
  project_dir --project
  my_tool my_args....   # Executes project2/.../my_tool


project_bin is used to call another project specific program under the current project as determined with project_dir.

This program is not usually called directly. Instead project_bin is symlinked as the name of the program to be executed. project_bin then uses that name to determine the program to be called. Alternatively the --project_bin-run option may be used to specify what to execute directly.

This process enables multiple versions of a program to exist in different project directories. The global path only contains a simple non-changing symlink which everyone can share.


Assume prog is to be executed. The shell uses the standard PATH environment variable and finds prog under $DIRPROJECT_PREFIX/bin/prog. $DIRPROJECT_PREFIX/bin/prog is installed as a simple symlink to project_bin. Thus the shell executes project_bin.

Project_bin then determines the current project and sets the DIRPROJECT environment variable, which has the link to the current project area. See Dir::Project program_bin() for more details.

Project_bin then uses the DIRPROJECT directory in combination with the DIRPROJECT_PATH to search for prog, the name project_bin was invoked under. prog is then executed with all of the arguments passed through project_bin.

If project_bin couldn’t determine the project or find the binary using DIRPROJECT_PATH, it tries to execute $DIRPROJECT_PREFIX/bin/prog__notfound which is generally a link to a version of prog that is the default for when outside a project.

Instead of symlinking, you can make a script to call project_bin. This allows the name of the script to differ from the name of the linked program, and also allows it to work on systems without symlinks.

  #!/usr/bin/perl -w
  exec project_bin, --project_bin-run, name_of_script, @ARGV;


--debug The debug flag is passed to the application, and also enables debugging messages from project_bin itself.
--project_bin-debug Strip this flag before passing to the application, and enable debugging.
--project_bin-help Show this help message and exit.
--project_bin-run program Specify the program name to be executed. If not specified, presumes project_bin is symlinked, and $0 contains the name of the program to execute. See the example above.
--project_bin-version Show program version and exit.
--project_bin-which Instead of running the program, print the resolved path, similar to the which program. If you symlink project_bin to project_which, this will be the default action.
... All other arguments are passed through to the application.


See Dir::Project for the list of relevant environment variables.


Dir-Project is part of the <> free EDA software tool suite. The latest version is available from CPAN and from <>.

Copyright 2001-2014 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.


Wilson Snyder <>


Dir::Project, project_dir
Search for    or go to Top of page |  Section 1 |  Main Index

perl v5.20.3 PROJECT_BIN (1) 2014-04-13

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.