nutools/ulibshell

98 lines
2.7 KiB
Plaintext
Raw Normal View History

2013-08-27 15:14:44 +04:00
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
function display_help() {
uecho "$scriptname: Lancer un shell après avoir chargé des modules de ulib
USAGE
$scriptname [options] [args...]
OPTIONS
-r module
Spécifier un module à charger avec urequire. Plusieurs modules peuvent
être spécifiés en les séparant par ':'
Par défaut, seul le module DEFAULTS est chargé.
Un shell est lancé dans lequel les modules spécifiés sont chargés. De plus, PATH
est modifié pour que $scriptdir soit ajouté en premier.
Les arguments sont passés inchangés au shell."
}
source "$(dirname "$0")/ulib/ulib" &&
urequire DEFAULTS ||
exit 1
parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-r: modules \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
ac_set_tmpfile bashrc
echo "\
if ! grep -q '/etc/bash.bashrc' /etc/profile; then
[ -f /etc/bash.bashrc ] && source /etc/bash.bashrc
fi
if ! grep -q '~/.bashrc' ~/.bash_profile; then
[ -f ~/.bashrc ] && source ~/.bashrc
fi
[ -f /etc/profile ] && source /etc/profile
[ -f ~/.bash_profile ] && source ~/.bash_profile
if ! grep -q '$scriptdir/bashrc' ~/.bashrc; then
if [ -f '$scriptdir/bashrc' ]; then
if ! grep -q @@dest@@ '$scriptdir/bashrc'; then
# ne lire que si le répertoire est déployé
source '$scriptdir/bashrc'
fi
fi
function uprovide() { :; }
source '$scriptdir/ulib/uenv'
__uenv_source_dirs '$scriptdir/lib/bashrc.d'
__uenv_cleanup
fi
if ! grep -q '$scriptdir/profile' ~/.bash_profile; then
if [ -f '$scriptdir/profile' ]; then
if grep -q @@dest@@ '$scriptdir/profile'; then
# répertoire non déployé
# la ligne suivante est copiée du fichier profile
[ -z '$USER' -a -n '$LOGNAME' ] && export USER='$LOGNAME'
else
# ne lire que si le répertoire est déployé
source '$scriptdir/profile'
fi
fi
function uprovide() { :; }
source '$scriptdir/ulib/uenv'
__uenv_source_dirs '$scriptdir/lib/profile.d'
__uenv_cleanup
fi
# Modifier le PATH
PATH=$(quoted_args "$scriptdir"):\"$PATH\"
if [ -n '$DEFAULT_PS1' ]; then
DEFAULT_PS1=$(quoted_args "[ulibshell] $DEFAULT_PS1")
else
if [ -z '$PS1' ]; then
PS1='\\u@\\h \\w \\$ '
fi
PS1=\"[ulibshell] \$PS1\"
fi
$(quoted_args source "$scriptdir/ulib/ulib")
urequire DEFAULTS" >"$bashrc"
array_fix_paths modules
if [ -n "${modules[*]}" ]; then
etitle "Chargement des modules"
for module in "${modules[@]}"; do
estep "$module"
quoted_args urequire "$module" >>"$bashrc"
done
eend
fi
estep "Lancement du sous-shell"
"$SHELL" --rcfile "$bashrc" -i -- "$@"
# note: ne pas faire exec "$SHELL", parce que sinon le fichier temporaire bashrc
# n'est pas supprimé