gbpm ( path mangler) https://git.potato.am/gbpm.git/ Manage multiple Python/Ruby/etc. installations with no black magic. NOTES gbpm only manages installations located in GBPM_OPTS_PATH, shadowing binaries already reachable from PATH. No information on external installations is displayed. A substring match is performed when selecting an installation, with tiebreak rules to choose intuitively, the greatest being selected amongst equally ranked matches. For example, `2.1' will match `python-2.1.3' over `python-2.1.2' or `python-3.2.1'. DEPENDENCIES bash (>= 4.1) coreutils (>= 7.0) (sort) INSTALLING The output of this script is a series of commands to be executed, e.g. via a shell function in `~/.bashrc': pypm() { . <( GBPM_CMD='pypm' \ GBPM_LABEL='python' \ GBPM_PATH="${HOME}/.pythons" \ /path/to/gbpm.sh "${@}") } rbpm() { . <( GBPM_CMD='rbpm' \ GBPM_LABEL='ruby' \ GBPM_LABEL_PL='rubies' \ GBPM_PATH="${HOME}/.rubies" \ /path/to/gbpm.sh "${@}") } INSTALLING VERSIONS With `~/.rubies' as the managed directory, the path to a ruby binary should look something like: ~/.rubies/ruby-2.1.2/bin/ruby To install Ruby to this directory: $ wget https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.bz2 $ tar -xf ruby-2.1.2.tar.bz2 $ cd ruby-2.1.2 $ ./configure --prefix="${HOME}"/.rubies/ruby-2.1.2 $ make $ make install USAGE A series of commands showing gbpm in use, through an `rbpm' function: $ ruby -v bash: ruby: command not found $ rbpm ls ruby-1.8.7-p374 ruby-1.9.3-p547 ruby-2.1.2 $ rbpm set 2.1 adding /home/david/.rubies/ruby-2.1.2/bin to PATH $ rbpm ls ruby-1.8.7-p374 ruby-1.9.3-p547 * ruby-2.1.2 $ ruby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] $ rbpm set 1.9 removing /home/david/.rubies/ruby-2.1.2/bin from PATH adding /home/david/.rubies/ruby-1.9.3-p547/bin to PATH $ ruby -v ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-linux] $ rbpm clear removing /home/david/.rubies/ruby-1.9.3-p547/bin from PATH $ ruby -v bash: ruby: command not found To set the version from a .ruby-version file: $ rbpm set $(cat .ruby-version) adding /home/david/.rubies/ruby-1.8.7-p374/bin to PATH AUTHORS David Vazgenovich Shakaryan LICENSE Distributed under the terms of the MIT License. See included COPYING file for the full license text. # vim: set sw=2 sts=2 ts=2 et tw=72 spell spl=en :