diff options
Diffstat (limited to 'reproduce/software/shell/bashrc.sh')
| -rwxr-xr-x | reproduce/software/shell/bashrc.sh | 56 | 
1 files changed, 53 insertions, 3 deletions
| diff --git a/reproduce/software/shell/bashrc.sh b/reproduce/software/shell/bashrc.sh index 23845d6..6bbd774 100755 --- a/reproduce/software/shell/bashrc.sh +++ b/reproduce/software/shell/bashrc.sh @@ -3,10 +3,10 @@  # To have better control over the environment of each analysis step (Make  # recipe), besides having environment variables (directly included from  # Make), it may also be useful to have a Bash startup file (this file). All -# of the Makefiles set this file as the `BASH_ENV' environment variable, so +# of the Makefiles set this file as the 'BASH_ENV' environment variable, so  # it is loaded into all the Make recipes within the project.  # -# The special `PROJECT_STATUS' environment variable is defined in every +# The special 'PROJECT_STATUS' environment variable is defined in every  # top-level Makefile of the project. It defines the the state of the Make  # that is calling this script. It can have three values:  # @@ -28,8 +28,13 @@  #       When doing the project's analysis: all software have known  #       versions.  # +#    shell +#    ----- +#       When the user has activated the interactive shell (with './project +#       shell').  # -# Copyright (C) 2019-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org> +# +# Copyright (C) 2019-2025 Mohammad Akhlaghi <mohammad@akhlaghi.org>  #  # This script is free software: you can redistribute it and/or modify  # it under the terms of the GNU General Public License as published by @@ -43,3 +48,48 @@  #  # You should have received a copy of the GNU General Public License  # along with this script.  If not, see <http://www.gnu.org/licenses/>. + + + + + +# Interactive mode settings. We don't want these within the pipeline +# because they are useless there (for example the introduction message or +# prompt) and can un-necessarily slow down the running jobs (recall that +# the shell is executed at the start of each recipe). +if [ x$PROJECT_STATUS = xshell ]; then + +    # A small introductory message. +    echo "----------------------------------------------------------------------" +    echo "Welcome to the Maneage interactive shell for this project, running" +    echo " $(sh --version | awk 'NR==1')" +    echo +    echo "This shell's home directory is the project's build directory:" +    echo " HOME: $HOME" +    echo +    echo "This shell's startup file is in the project's source directory:" +    echo " $PROJECT_RCFILE" +    echo +    echo "To return to your host shell, run the 'exit' command." +    echo "----------------------------------------------------------------------" + +    # To activate colors in generic commands. +    alias ls='ls --color=auto' +    alias grep='grep --color=auto' + +    # Add the Git branch information to the command prompt only when Git is +    # present. Also set the command-prompt color to purple for normal users +    # and red when the root is running it. +    if git --version &> /dev/null; then +        parse_git_branch() { +	    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' +        } +    else +        parse_git_branch() { echo &> /dev/null; } +    fi +    if [ x$(whoami) = xroot ]; then +        export PS1="[\[\033[01;31m\]\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\]]# " +    else +        export PS1="[\[\033[01;35m\]maneage@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\]]$ " +    fi +fi | 
