diff options
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | README.markdown | 10 | ||||
-rw-r--r-- | bash/bash_profile | 10 | ||||
-rw-r--r-- | bash/bash_profile.d/fortune.bash | 8 | ||||
-rw-r--r-- | bash/bash_profile.d/remind.bash | 8 | ||||
-rw-r--r-- | bash/bash_profile.d/verse.bash (renamed from sh/profile.d/verse.sh) | 6 | ||||
-rw-r--r-- | sh/profile.d/remind.sh | 6 |
7 files changed, 38 insertions, 16 deletions
@@ -64,10 +64,12 @@ install : install-bash \ install-bash : test-bash install -m 0755 -d -- \ "$(HOME)"/.config \ - "$(HOME)"/.bashrc.d + "$(HOME)"/.bashrc.d \ + "$(HOME)"/.bash_profile.d install -m 0644 -- bash/bashrc "$(HOME)"/.bashrc install -m 0644 -- bash/bashrc.d/* "$(HOME)"/.bashrc.d install -m 0644 -- bash/bash_profile "$(HOME)"/.bash_profile + install -m 0644 -- bash/bash_profile.d/* "$(HOME)"/.bash_profile.d install -m 0644 -- bash/bash_logout "$(HOME)"/.bash_logout install -m 0644 -- bash/bash_completion "$(HOME)"/.config/bash_completion @@ -216,7 +218,7 @@ test-sh : @echo "All sh(1) scripts parsed successfully." test-bash : - @for bash in bash/* bash/bashrc.d/* ; do \ + @for bash in bash/* bash/bashrc.d/* bash/bash_profile.d/* ; do \ if [ -f "$$bash" ] && ! bash -n "$$bash" ; then \ exit 1 ; \ fi \ diff --git a/README.markdown b/README.markdown index 4f50e384..d39e2ef6 100644 --- a/README.markdown +++ b/README.markdown @@ -97,11 +97,11 @@ by `.profile` are saved in `.profile.d` and iterated on login for ease of management. All of these boil down to exporting variables appropriate to the system and the software it has available. -My `.bash_profile` calls `.profile` for variable exports, and then runs -`.bashrc` for interactive shells. Subscripts are kept in `.bashrc.d`, and all -are loaded for the creation of any new interactive shell. The contents of this -directory changes all the time depending on the host, and only specific scripts -in it are versioned. +My `.bash_profile` calls `.profile` for variable exports, runs subscripts in +`.bash_profile.d`. It then runs `.bashrc`, which only applies for interactive +shells; subscripts are loaded from `.bashrc.d`. interactive shell. The contents +of this directory changes all the time depending on the host, and only specific +scripts in it are versioned. My interactive and scripting shell of choice is Bash; as a GNU/Linux admin who ends up installing Bash on \*BSD machines anyway, I very rarely have to write diff --git a/bash/bash_profile b/bash/bash_profile index 7366840e..05b15693 100644 --- a/bash/bash_profile +++ b/bash/bash_profile @@ -11,6 +11,16 @@ elif ((10#${BASH_VERSINFO[0]%%[![:digit:]]*} == 2)) && \ return fi +# Load any supplementary scripts +if [[ -d $HOME/.bash_profile.d ]] ; then + for bash_profile in "$HOME"/.bash_profile.d/*.bash ; do + if [[ -e $bash_profile ]] ; then + source "$bash_profile" + fi + done + unset -v bash_profile +fi + # Source interactive Bash config if it exists if [[ -e $HOME/.bashrc ]] ; then source "$HOME"/.bashrc diff --git a/bash/bash_profile.d/fortune.bash b/bash/bash_profile.d/fortune.bash new file mode 100644 index 00000000..9caa3d3c --- /dev/null +++ b/bash/bash_profile.d/fortune.bash @@ -0,0 +1,8 @@ +# If interactive shell and fortune(6) installed, print a short fortune +if [[ $- == *i* ]] && hash fortune 2>/dev/null ; then ( + if [[ -d "$HOME"/.local/share/games/fortunes ]] ; then + FORTUNE_PATH=${FORTUNE_PATH:-$HOME/.local/share/games/fortunes} + fi + fortune -sn "${FORTUNE_MAXSIZE:-1024}" "$FORTUNE_PATH" +) ; fi + diff --git a/bash/bash_profile.d/remind.bash b/bash/bash_profile.d/remind.bash new file mode 100644 index 00000000..50a3d8c8 --- /dev/null +++ b/bash/bash_profile.d/remind.bash @@ -0,0 +1,8 @@ +# If interactive and rem(1) installed, run it +if [[ $- == *i* ]] && hash rem 2>/dev/null ; then ( + printf '\n' + while read -r reminder ; do + printf '* %s\n' "$reminder" + done < <(rem -hq) +) ; fi + diff --git a/sh/profile.d/verse.sh b/bash/bash_profile.d/verse.bash index c4fec152..5d2538dc 100644 --- a/sh/profile.d/verse.sh +++ b/bash/bash_profile.d/verse.bash @@ -1,13 +1,13 @@ # Run verse(1) if it's installed and we haven't seen it already today (the # verses are selected by date); run in a subshell to keep vars out of global # namespace -if command -v verse >/dev/null 2>&1 ; then ( +if [[ $- == *i* ]] && hash verse 2>/dev/null ; then ( date=$(date +%Y-%m-%d) versefile=${VERSEFILE:-$HOME/.verse} - if [ -e "$HOME"/.verse ] ; then + if [[ -e "$HOME"/.verse ]] ; then read -r lastversedate < "$versefile" fi - if [ "$date" \> "$lastversedate" ] ; then + if [[ "$date" > "$lastversedate" ]] ; then printf '\n%s\n\n' "$(verse)" printf '%s\n' "$date" > "$versefile" fi diff --git a/sh/profile.d/remind.sh b/sh/profile.d/remind.sh deleted file mode 100644 index eec279af..00000000 --- a/sh/profile.d/remind.sh +++ /dev/null @@ -1,6 +0,0 @@ -# Show reminders on login -if command -v remind >/dev/null 2>&1 && [ -r "$HOME"/.reminders ] ; then - printf '\n' - remind -q "$HOME"/.reminders | sed 's/^/* /' -fi - |