98 lines
2.7 KiB
Plaintext
98 lines
2.7 KiB
Plaintext
|
#!/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é
|