aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/shell/bashrc.sh
diff options
context:
space:
mode:
Diffstat (limited to 'reproduce/software/shell/bashrc.sh')
-rwxr-xr-xreproduce/software/shell/bashrc.sh56
1 files changed, 53 insertions, 3 deletions
diff --git a/reproduce/software/shell/bashrc.sh b/reproduce/software/shell/bashrc.sh
index 23845d6..814de2c 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-2023 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