#!/usr/bin/env bash # Copyright (C) 2016-2022 Ole Tange, http://ole.tange.dk and Free # Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # 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. # # You should have received a copy of the GNU General Public License # along with this program; if not, see # or write to the Free Software Foundation, Inc., 51 Franklin St, # Fifth Floor, Boston, MA 02110-1301 USA # # SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc. # SPDX-License-Identifier: GPL-3.0-or-later grepq() { # grep -q for systems without -q grep >/dev/null 2>/dev/null "$@" } installer() { source="$1" script="$2" into="$3" if grepq $script "$into"; then true already installed else echo $source \`which $script\` >> "$into" fi } while test $# -gt 0; do key="$1" case $key in -i|--install) installer . env_parallel.bash "$HOME"/.bashrc installer . env_parallel.sh "$HOME"/.shrc installer . env_parallel.zsh "$HOME"/.zshenv installer source env_parallel.ksh "$HOME"/.kshrc installer source env_parallel.mksh "$HOME"/.mkshrc echo $SHELL | grepq /pdksh && installer . env_parallel.pdksh "$HOME"/.profile echo $SHELL | grepq /ash && installer . env_parallel.ash "$HOME"/.profile echo $SHELL | grepq /dash && installer . env_parallel.dash "$HOME"/.profile installer source env_parallel.csh "$HOME"/.cshrc installer source env_parallel.tcsh "$HOME"/.tcshrc mkdir -p "$HOME"/.config/fish grepq env_parallel.fish "$HOME"/.config/fish/config.fish || echo '. (which env_parallel.fish)' >> "$HOME"/.config/fish/config.fish echo 'Installed env_parallel in:' echo " " "$HOME"/.bashrc echo " " "$HOME"/.shrc echo " " "$HOME"/.zshenv echo " " "$HOME"/.config/fish/config.fish echo " " "$HOME"/.kshrc echo " " "$HOME"/.mkshrc echo " " "$HOME"/.profile echo " " "$HOME"/.cshrc echo " " "$HOME"/.tcshrc exit ;; *) echo "Unknown option: $key" ;; esac shift # past argument or value done cat <<'_EOS' env_parallel only works if it is a function. Do this and restart your shell: bash: Put this in $HOME/.bashrc: . `which env_parallel.bash` E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc Supports: variables, aliases, functions, arrays fish: Put this in $HOME/.config/fish/config.fish: . (which env_parallel.fish) E.g. by doing: echo '. (which env_parallel.fish)' >> $HOME/.config/fish/config.fish Supports: variables, aliases, functions, arrays ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh` E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc Supports: variables, aliases, functions, arrays mksh: Put this in $HOME/.mkshrc: source `which env_parallel.mksh` E.g. by doing: echo 'source `which env_parallel.mksh`' >> $HOME/.mkshrc Supports: variables, aliases, functions, arrays pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh` E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile Supports: variables, aliases, functions, arrays zsh: Put this in $HOME/.zshrc: . `which env_parallel.zsh` E.g. by doing: echo '. `which env_parallel.zsh`' >> $HOME/.zshenv Supports: variables, functions, arrays ash: Put this in $HOME/.profile: . `which env_parallel.ash` E.g. by doing: echo '. `which env_parallel.ash`' >> $HOME/.profile Supports: variables, aliases dash: Put this in $HOME/.profile: . `which env_parallel.dash` E.g. by doing: echo '. `which env_parallel.dash`' >> $HOME/.profile Supports: variables, aliases csh: Put this in $HOME/.cshrc: source `which env_parallel.csh` E.g. by doing: echo 'source `which env_parallel.csh`' >> $HOME/.cshrc Supports: variables, aliases, arrays with no special chars tcsh: Put this in $HOME/.tcshrc: source `which env_parallel.tcsh` E.g. by doing: echo 'source `which env_parallel.tcsh`' >> $HOME/.tcshrc Supports: variables, aliases, arrays with no special chars To install in all shells run: env_parallel --install In a script you need to run this before using env_parallel: bash: . `which env_parallel.bash` ksh: source `which env_parallel.ksh` mksh: source `which env_parallel.mksh` pdksh: source `which env_parallel.pdksh` zsh: . `which env_parallel.zsh` ash: . `which env_parallel.ash` dash: . `which env_parallel.dash` For details: see man env_parallel _EOS