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