Difference between revisions of "Bash start up script"
From Wiki at Neela Nurseries
(Created page with "2020-11-02 For now, the following is a minimal .bashrc start up script, which matches the one on this wiki's home page in the section on shell scripting in Unix and Unix-like...") |
(noting dot bashrc amendments script changes, per new needs in VM and Docker environs.) |
||
Line 12: | Line 12: | ||
# --- EOF --- | # --- EOF --- | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | |||
+ | <!-- | ||
+ | #!/bin/bash | ||
+ | |||
+ | ##---------------------------------------------------------------------- | ||
+ | ## | ||
+ | ## | ||
+ | ## FILE: dot-bashrc-amendments.sh | ||
+ | ## | ||
+ | ## | ||
+ | ## LAST TOUCHED: 2021-06-04 THU | ||
+ | ## | ||
+ | ## | ||
+ | ## DESCRIPTION: short script to amend Debian and Ubuntu and or | ||
+ | ## Bourne shell run-time config file, normally named '.bashrc'. | ||
+ | ## Adds directory book-marking for up to thirty directories -- or | ||
+ | ## file system paths -- making these accessible by means of | ||
+ | ## three- and four- character aliases of the form 'gdnn' where | ||
+ | ## nn is an integer in the range 1 to 30. | ||
+ | ## | ||
+ | ## | ||
+ | ## HOW TO USE THIS SCRIPT: | ||
+ | ## | ||
+ | ## To enjoy directory bookmark aliases implemented in this file, in | ||
+ | ## a bash command line environment, the user may source this file by | ||
+ | ## hand, | ||
+ | ## | ||
+ | ## $ . dot-bashrc-amendments.sh | ||
+ | ## | ||
+ | ## or alternately for convenience a given user may amend their | ||
+ | ## .login or .bashrc start-up script to include a line which | ||
+ | ## does the same sourcing of this file. | ||
+ | ## | ||
+ | ## | ||
+ | ## | ||
+ | |||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | |||
+ | ## | ||
+ | ## NOTES ON IMPLEMENTATION: | ||
+ | ## | ||
+ | ## (1) When this script is called with no arguments, it reads a run- | ||
+ | ## time config file to determine which group of file-stored, | ||
+ | ## bookmarked paths to read into shell variables and to make readily | ||
+ | ## accessible via path navigation aliases. If the run-time config | ||
+ | ## is not found the shell creates it and populates it with its | ||
+ | ## identifier '1' for the first group among 1..9 supported groups | ||
+ | ## of path (also referred to as directory) bookmarks. | ||
+ | ## | ||
+ | ## (2) When this script is called with a first argument in the range | ||
+ | ## 1..9, a single character number representation, the script | ||
+ | ## writes this number to its run-time config file, and uses this | ||
+ | ## number to choose among groups of saved paths written to the | ||
+ | ## given user's dot-bashrc-amendments stored path files. If not | ||
+ | ## called with a valid bookmarks group id, this script falls back | ||
+ | ## to doing the tasks in (1) | ||
+ | ## | ||
+ | ## | ||
+ | ## | ||
+ | ## | ||
+ | ## TO DO: | ||
+ | ## | ||
+ | ## [ ] add to this script function which detects and shows | ||
+ | ## the script's own aliases, and another function(s) to | ||
+ | ## allow user to change aliases, e.g. in event that alias | ||
+ | ## conflicts with a locally installed command, | ||
+ | ## | ||
+ | ## [ ] add to this script the ability to open arbitrary text | ||
+ | ## file containing bookmarked paths, and to show it without | ||
+ | ## replacing present bookmarks, | ||
+ | ## | ||
+ | ## [ ] *** Summary Report Of Bookmarked Paths *** | ||
+ | ## add to this script a function to show bookmarks it | ||
+ | ## holds and status of whether each given bookmark exists | ||
+ | ## as a valid path on the local file system, | ||
+ | ## | ||
+ | ## [ ] 2017-12-02 - add parameters sanity check to routine 'read_bookmarks_file', | ||
+ | ## | ||
+ | ## | ||
+ | ## | ||
+ | ## | ||
+ | ## | ||
+ | ## TO CONFIRM: | ||
+ | ## | ||
+ | ## [ ] 2017-12-02 - make sure that variable 'index' is visible in | ||
+ | ## the scope of the script which sets the alias 'sp' which | ||
+ | ## saves bookmarked paths, | ||
+ | ## | ||
+ | ## | ||
+ | ## | ||
+ | ## REFERENCES: | ||
+ | ## | ||
+ | ## See 'The Linux Documentation Project' at http://tldp.org/ | ||
+ | ## | ||
+ | ## * http://tldp.org/LDP/abs/html/testconstructs.html . . . [, [[ ]], (( )) - builtin test, | ||
+ | ## extended test, arithmetic test in bash context | ||
+ | ## | ||
+ | ## * http://tldp.org/LDP/abs/html/testbranch.html . . . note shell 'shift' parameters operator | ||
+ | ## | ||
+ | ## * http://tldp.org/LDP/abs/html/complexfunct.html . . . $1 $2 are first parameters to shell functions | ||
+ | ## | ||
+ | ## * http://www.grymoire.com/Unix/Sed.html | ||
+ | ## | ||
+ | ## * https://www.cyberciti.biz/faq/unix-howto-read-line-by-line-from-file/ | ||
+ | ## | ||
+ | ## * http://www.linuxjournal.com/content/return-values-bash-functions | ||
+ | ## | ||
+ | ## | ||
+ | ## | ||
+ | ## AUTHORS AND MAINTAINERS: | ||
+ | ## | ||
+ | ## Ted Havelka, ted@cs.pdx.edu | ||
+ | ## | ||
+ | ## | ||
+ | ## | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | |||
+ | |||
+ | ##---------------------------------------------------------------------- | ||
+ | ## SECTION - script variables of directory-bookmarker project | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | # --- SCRIPT VARS BEGIN --- | ||
+ | |||
+ | GREP=/bin/grep | ||
+ | SED=/bin/sed | ||
+ | |||
+ | |||
+ | SCRIPT_NAME=${0} | ||
+ | # echo "\$SCRIPT_NAME assigned value of \${0} and holds ${SCRIPT_NAME}," | ||
+ | SCRIPT_NAME="dot-bash-amendments.sh" | ||
+ | |||
+ | ## 2018-07-13 - added by Ted: | ||
+ | #SCRIPT_NAME_ABBR="dbrca" | ||
+ | # Directory Bookmarking Run time Config | ||
+ | SCRIPT_NAME_ABBR="dbrca" | ||
+ | |||
+ | |||
+ | DIRECTORY_OF_BOOKMARKS_FILES=".bookmarked-paths" | ||
+ | |||
+ | FILENAME_FORM_OF_BOOKMARKED_PATHS="bookmarked-paths-nn.txt" | ||
+ | |||
+ | FILENAME_OF_BOOKMARKS_RUNTIME_CONFIGURATION="bookmarked-paths.rc" | ||
+ | |||
+ | BOOKMARKS_GROUPS_SUPPORTED="1..9" | ||
+ | |||
+ | # Directory Book Marker watermark, for sane $PATH amendments: | ||
+ | DBM_WATERMARK="${HOME}/path-amended-by-directory-bookmarker" | ||
+ | |||
+ | # . . . | ||
+ | bookmarks_group_id=1 | ||
+ | |||
+ | # Shell variable used in 'sp' alias to save bookmarked paths: | ||
+ | index=0 | ||
+ | |||
+ | |||
+ | ## 2017-12-02 - How are these variables used? - TMH | ||
+ | bash_settings_file="${HOME}/.bash_settings_local" | ||
+ | |||
+ | |||
+ | ## | ||
+ | ## - SECTION - flags to enable and disable dot_bashrc_amendments actions | ||
+ | ## | ||
+ | |||
+ | FLAG__AMEND_PATH_WITH_WINDOWS_PATH=0 | ||
+ | FLAG__DISPLAY_EXTRA_VARS_FOLLOWING_SHOWN_PATHS=0 | ||
+ | |||
+ | |||
+ | # --- SCRIPT VARS END --- | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ##---------------------------------------------------------------------- | ||
+ | ## SECTION - script functions | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | function show_aliases_in_this_script() | ||
+ | { | ||
+ | ## 2017-12-02 NEED - Contributor Ted noting that following command will | ||
+ | ## show all script lines, including comments and commented out | ||
+ | ## commands (which are also comments), which this function's name | ||
+ | ## does not indicate. NEED to fix this or rename this function . . . | ||
+ | |||
+ | $(GREP) -n alias $0 | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | function set_aliases() | ||
+ | { | ||
+ | ##---------------------------------------------------------------------- | ||
+ | ## PURPOSE: . . . | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | # echo "setting some shell safety and shortcut aliases . . ." | ||
+ | |||
+ | |||
+ | ## Some important shell safe-guarding aliases for Unix and Linux systems: | ||
+ | |||
+ | alias rm='rm -i' | ||
+ | alias cp='cp -i' | ||
+ | alias mv='mv -i' | ||
+ | |||
+ | # list files in long format starting from a cleared screen: | ||
+ | alias lss='clear; ls -lF' | ||
+ | |||
+ | # list directories only in long format: | ||
+ | alias dls='ls -l | grep "^d"' | ||
+ | |||
+ | |||
+ | |||
+ | # run custom Remote UPtime script: | ||
+ | alias rup='${HOME}/bin/rup' | ||
+ | |||
+ | # . . . | ||
+ | alias cvs='cvs -d ${HOME}/cvs -e /usr/bin/vi' | ||
+ | |||
+ | |||
+ | # Shell shortcuts to cd to local oft used directories: | ||
+ | |||
+ | alias archive='cd ${HOME}/archive; echo "Now at `pwd`" ' | ||
+ | alias bin='cd ${HOME}/bin; echo "Now at `pwd`" ' | ||
+ | alias notes='cd ${HOME}/notes; echo "Now at `pwd`" ' | ||
+ | |||
+ | |||
+ | # 2012-01-25 | ||
+ | |||
+ | alias xterm='xterm -bg black -fg white -geometry 108x36' | ||
+ | alias x='xterm -bg black -fg white -geometry 115x36 &' | ||
+ | |||
+ | |||
+ | # NOTE 2017-12-02 - xlock command generally not available on last | ||
+ | # three years' Debian and Ubuntu software package mirrors. Related | ||
+ | # command 'xscreensaver-command -lock' is installable . . . | ||
+ | |||
+ | alias xlock='/usr/bin/xlock -mode scooter -count 100' | ||
+ | |||
+ | |||
+ | alias restore-path-var='. ${HOME}/dot-bashrc-amendments.sh restore-path-variable' | ||
+ | |||
+ | |||
+ | } # end function set_aliases() | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | function set_aliases_for_bookmarking() | ||
+ | { | ||
+ | |||
+ | # echo "setting aliases for bookmarking of paths . . ." | ||
+ | |||
+ | alias cb='echo "active directory bookmarks group presently set to group ${bookmarks_group_id},"' | ||
+ | |||
+ | #--------------------------------------------------------------------- | ||
+ | # STEP: create aliases for saving paths and returning to paths | ||
+ | #--------------------------------------------------------------------- | ||
+ | |||
+ | # setting of bookmarks 1 through 10: | ||
+ | |||
+ | alias sd1='export D1=`pwd`; echo "Set variable D1 to `pwd`" ' | ||
+ | alias sd2='export D2=`pwd`; echo "Set variable D2 to `pwd`" ' | ||
+ | alias sd3='export D3=`pwd`; echo "Set variable D3 to `pwd`" ' | ||
+ | alias sd4='export D4=`pwd`; echo "Set variable D4 to `pwd`" ' | ||
+ | alias sd5='export D5=`pwd`; echo "Set variable D5 to `pwd`" ' | ||
+ | |||
+ | alias sd6='export D6=`pwd`; echo "Set variable D6 to `pwd`" ' | ||
+ | alias sd7='export D7=`pwd`; echo "Set variable D7 to `pwd`" ' | ||
+ | alias sd8='export D8=`pwd`; echo "Set variable D8 to `pwd`" ' | ||
+ | alias sd9='export D9=`pwd`; echo "Set variable D9 to `pwd`" ' | ||
+ | alias sd10='export D10=`pwd`; echo "Set variable D10 to `pwd`" ' | ||
+ | |||
+ | # setting of bookmarks 11 through 20: | ||
+ | |||
+ | alias sd11='export D11=`pwd`; echo "Set variable D11 to `pwd`" ' | ||
+ | alias sd12='export D12=`pwd`; echo "Set variable D12 to `pwd`" ' | ||
+ | alias sd13='export D13=`pwd`; echo "Set variable D13 to `pwd`" ' | ||
+ | alias sd14='export D14=`pwd`; echo "Set variable D14 to `pwd`" ' | ||
+ | alias sd15='export D15=`pwd`; echo "Set variable D15 to `pwd`" ' | ||
+ | |||
+ | alias sd16='export D16=`pwd`; echo "Set variable D16 to `pwd`" ' | ||
+ | alias sd17='export D17=`pwd`; echo "Set variable D17 to `pwd`" ' | ||
+ | alias sd18='export D18=`pwd`; echo "Set variable D18 to `pwd`" ' | ||
+ | alias sd19='export D19=`pwd`; echo "Set variable D19 to `pwd`" ' | ||
+ | alias sd20='export D20=`pwd`; echo "Set variable D20 to `pwd`" ' | ||
+ | |||
+ | # setting of bookmarks 21 through 30: | ||
+ | |||
+ | alias sd21='export D21=`pwd`; echo "Set variable D21 to `pwd`" ' | ||
+ | alias sd22='export D22=`pwd`; echo "Set variable D22 to `pwd`" ' | ||
+ | alias sd23='export D23=`pwd`; echo "Set variable D23 to `pwd`" ' | ||
+ | alias sd24='export D24=`pwd`; echo "Set variable D24 to `pwd`" ' | ||
+ | alias sd25='export D25=`pwd`; echo "Set variable D25 to `pwd`" ' | ||
+ | |||
+ | alias sd26='export D26=`pwd`; echo "Set variable D26 to `pwd`" ' | ||
+ | alias sd27='export D27=`pwd`; echo "Set variable D27 to `pwd`" ' | ||
+ | alias sd28='export D28=`pwd`; echo "Set variable D28 to `pwd`" ' | ||
+ | alias sd29='export D29=`pwd`; echo "Set variable D29 to `pwd`" ' | ||
+ | alias sd30='export D30=`pwd`; echo "Set variable D30 to `pwd`" ' | ||
+ | |||
+ | # echo "- TEST - setting alias SD31 . . ." | ||
+ | alias sd31='echo "Doh, thirty one bookmarks not supported!"' | ||
+ | |||
+ | |||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | ## 1024 cd foo; echo $? | ||
+ | ## 1025 cd foo; echo $?; if (( $? && 1 )); then echo "dir not found!"; else echo "now at $PWD"; fi | ||
+ | ## 1026 cd foo; if (( $? && 1 )); then echo "dir not found!"; else echo "now at $PWD"; fi | ||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | |||
+ | ## 2018-07-13 - added by Ted for improved notices when selected dir not found: | ||
+ | alias announce_new_dir='if (( $? && 1 )); then echo "- ${SCRIPT_NAME_ABBR} - dir not found!"; else echo "now at $PWD"; fi' | ||
+ | |||
+ | # navigation to bookmarked directories 1 through 10: | ||
+ | |||
+ | # alias gd1='cd $D1; echo "Now at $D1" ' | ||
+ | alias gd1='cd $D1; if (( $? && 1 )); then echo "- ${SCRIPT_NAME_ABBR} - dir not found!"; else echo "now at $PWD"; fi' | ||
+ | alias gd2='cd $D2; announce_new_dir' | ||
+ | alias gd3='cd $D3; announce_new_dir' | ||
+ | alias gd4='cd $D4; announce_new_dir' | ||
+ | alias gd5='cd $D5; announce_new_dir' | ||
+ | |||
+ | alias gd6='cd $D6; announce_new_dir' | ||
+ | alias gd7='cd $D7; announce_new_dir' | ||
+ | alias gd8='cd $D8; announce_new_dir' | ||
+ | alias gd9='cd $D9; announce_new_dir' | ||
+ | alias gd10='cd $D10; announce_new_dir' | ||
+ | |||
+ | # navigation to bookmarked directories 11 through 20: | ||
+ | |||
+ | alias gd11='cd $D11; announce_new_dir' | ||
+ | alias gd12='cd $D12; announce_new_dir' | ||
+ | alias gd13='cd $D13; announce_new_dir' | ||
+ | alias gd14='cd $D14; announce_new_dir' | ||
+ | alias gd15='cd $D15; announce_new_dir' | ||
+ | |||
+ | alias gd16='cd $D16; announce_new_dir' | ||
+ | alias gd17='cd $D17; announce_new_dir' | ||
+ | alias gd18='cd $D18; announce_new_dir' | ||
+ | alias gd19='cd $D19; announce_new_dir' | ||
+ | alias gd20='cd $D20; announce_new_dir' | ||
+ | |||
+ | # navigation to bookmarked directories 21 through 30: | ||
+ | |||
+ | alias gd21='cd $D21; announce_new_dir' | ||
+ | alias gd22='cd $D22; announce_new_dir' | ||
+ | alias gd23='cd $D23; announce_new_dir' | ||
+ | alias gd24='cd $D24; announce_new_dir' | ||
+ | alias gd25='cd $D25; announce_new_dir' | ||
+ | |||
+ | alias gd26='cd $D26; announce_new_dir' | ||
+ | alias gd27='cd $D27; if (( $? && 1 )); then echo "- ${SCRIPT_NAME_ABBR} - dir not found!"; else echo "now at $PWD"; fi' | ||
+ | alias gd28='cd $D28; announce_new_dir' | ||
+ | alias gd29='cd $D29; announce_new_dir' | ||
+ | alias gd30='cd $D30; announce_new_dir' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | ## Important - show paths | ||
+ | ## "Show paths" alias 's' here defined: | ||
+ | ## Banner message at end of alias 's', NEED to factor banner to a shell | ||
+ | ## function of its own - TMH 2021-05-24 | ||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | |||
+ | alias s='\ | ||
+ | echo | ||
+ | echo "Bookmarked paths in bookmarks group ${bookmarks_group_id} are:" | ||
+ | echo | ||
+ | \ | ||
+ | echo "variable D1 points to $D1";\ | ||
+ | echo variable D2 points to $D2; echo variable D3 points to $D3; echo variable D4 points to $D4; echo variable D5 points to $D5; echo variable D6 points to $D6; echo variable D7 points to $D7; echo variable D8 points to $D8; echo variable D9 points to $D9; echo variable D10 points to $D10;\ | ||
+ | \ | ||
+ | echo " - - - - -";\ | ||
+ | \ | ||
+ | echo variable D11 points to $D11; echo variable D12 points to $D12; echo variable D13 points to $D13; echo variable D14 points to $D14; echo variable D15 points to $D15; echo variable D16 points to $D16; echo variable D17 points to $D17; echo variable D18 points to $D18; echo variable D19 points to $D19; echo variable D20 points to $D20;\ | ||
+ | \ | ||
+ | echo " - - - - -";\ | ||
+ | \ | ||
+ | echo "variable D21 points to $D21";\ | ||
+ | echo "variable D22 points to $D22";\ | ||
+ | echo "variable D23 points to $D23";\ | ||
+ | echo "variable D24 points to $D24";\ | ||
+ | echo "variable D25 points to $D25";\ | ||
+ | \ | ||
+ | echo "variable D26 points to $D26";\ | ||
+ | echo "variable D27 points to $D27";\ | ||
+ | echo "variable D28 points to $D28";\ | ||
+ | echo "variable D29 points to $D29";\ | ||
+ | echo "variable D30 points to $D30";\ | ||
+ | \ | ||
+ | echo; \ | ||
+ | echo "...these paths in bookmarks group ${bookmarks_group_id}." | ||
+ | #echo EDITOR is set to: $EDITOR;\ | ||
+ | #echo "see file dot-bashrc-amendments.sh, typically in home directory of present user,";\ | ||
+ | #echo "for implementation of directory bookmarks and D1..D30 variables - TMH";\ | ||
+ | #echo "this shell script written by Ted Havelka and licensed under GNU Public License, 2005 - 2021";\ | ||
+ | \ | ||
+ | echo' | ||
+ | |||
+ | |||
+ | ## 2021-05-24 MON - adding alias to show only first twenty bookmarked | ||
+ | ## directories, for smaller terminal windows: | ||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | |||
+ | alias s20='\ | ||
+ | echo | ||
+ | echo "First twenty bookmarked paths in group ${bookmarks_group_id} are:" | ||
+ | echo | ||
+ | \ | ||
+ | echo "variable D1 points to $D1";\ | ||
+ | echo variable D2 points to $D2; echo variable D3 points to $D3; echo variable D4 points to $D4; echo variable D5 points to $D5; echo variable D6 points to $D6; echo variable D7 points to $D7; echo variable D8 points to $D8; echo variable D9 points to $D9; echo variable D10 points to $D10;\ | ||
+ | \ | ||
+ | echo " - - - - -";\ | ||
+ | \ | ||
+ | echo variable D11 points to $D11; echo variable D12 points to $D12; echo variable D13 points to $D13; echo variable D14 points to $D14; echo variable D15 points to $D15; echo variable D16 points to $D16; echo variable D17 points to $D17; echo variable D18 points to $D18; echo variable D19 points to $D19; echo variable D20 points to $D20;\ | ||
+ | \ | ||
+ | echo' | ||
+ | |||
+ | ##------------------------------------------------------------------------------ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | alias sp='bookmarked_path[0]="zztop"; | ||
+ | bookmarked_path[1]=$D1; bookmarked_path[2]=$D2; bookmarked_path[3]=$D3; bookmarked_path[4]=$D4; bookmarked_path[5]=$D5; | ||
+ | bookmarked_path[6]=$D6; bookmarked_path[7]=$D7; bookmarked_path[8]=$D8; bookmarked_path[9]=$D9; bookmarked_path[10]=$D10; | ||
+ | |||
+ | bookmarked_path[11]=$D11; bookmarked_path[12]=$D12; bookmarked_path[13]=$D13; bookmarked_path[14]=$D14; bookmarked_path[15]=$D15; | ||
+ | bookmarked_path[16]=$D16; bookmarked_path[17]=$D17; bookmarked_path[18]=$D18; bookmarked_path[19]=$D19; bookmarked_path[20]=$D20; | ||
+ | |||
+ | bookmarked_path[21]=$D21; bookmarked_path[22]=$D22; bookmarked_path[23]=$D23; bookmarked_path[24]=$D24; bookmarked_path[25]=$D25; | ||
+ | bookmarked_path[26]=$D26; bookmarked_path[27]=$D27; bookmarked_path[28]=$D28; bookmarked_path[29]=$D29; bookmarked_path[30]=$D30; | ||
+ | |||
+ | ## 2017-12-14 THU: | ||
+ | echo "about to save bookmarked paths using old script code in alias," | ||
+ | echo "in this code \$filename holds '$filename'," | ||
+ | echo "to local file $filename saving bookmarked directories:"; | ||
+ | echo -n > $filename; | ||
+ | for index in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30; do | ||
+ | echo "saving bookmarked path $index = ${bookmarked_path[$index]}"; | ||
+ | echo ${bookmarked_path[$index]} >> $filename; | ||
+ | done' | ||
+ | |||
+ | |||
+ | |||
+ | # alias clearpaths='\ | ||
+ | # echo "Clearing bookmarked paths in present shell . . ." \ | ||
+ | # echo "Note: bookmarked paths in bookmarks group ${bookmarks_group_id} still stored in ${filename}" \ | ||
+ | # export D1=""; export D2=""; export D3=""; export D4=""; export D5=""; \ | ||
+ | # export D6=""; export D7=""; export D8=""; export D9=""; export D10=""; \ | ||
+ | # \ | ||
+ | # export D11=""; export D12=""; export D13=""; export D14=""; export D15=""; \ | ||
+ | # export D16=""; export D17=""; export D18=""; export D19=""; export D20=""; \ | ||
+ | # \ | ||
+ | # export D21=""; export D22=""; export D23=""; export D24=""; export D25=""; \ | ||
+ | # export D26=""; export D27=""; export D28=""; export D29=""; export D30="";' | ||
+ | |||
+ | |||
+ | ## 2017-12-14 - unexpected new behavior observed when backslash characters | ||
+ | ## appear in alias defining statement above, removing those: | ||
+ | |||
+ | alias clearpaths=' | ||
+ | echo "Clearing bookmarked paths in present shell . . ." | ||
+ | echo "Note: bookmarked paths in bookmarks group ${bookmarks_group_id} still stored in ${filename}" | ||
+ | echo "use \`lp${bookmarks_group_id}\` to reload those bookmarked paths." | ||
+ | export D1=""; export D2=""; export D3=""; export D4=""; export D5=""; \ | ||
+ | export D6=""; export D7=""; export D8=""; export D9=""; export D10=""; \ | ||
+ | \ | ||
+ | export D11=""; export D12=""; export D13=""; export D14=""; export D15=""; \ | ||
+ | export D16=""; export D17=""; export D18=""; export D19=""; export D20=""; \ | ||
+ | \ | ||
+ | export D21=""; export D22=""; export D23=""; export D24=""; export D25=""; \ | ||
+ | export D26=""; export D27=""; export D28=""; export D29=""; export D30="";' | ||
+ | |||
+ | |||
+ | |||
+ | # 2017-12-02 - NEED TO ADDRESS INTENT AND ACTION OF load-paths: | ||
+ | # This alias likely doesn't work as intended, to load one set | ||
+ | # of bookmarked paths over others . . . - TMH | ||
+ | |||
+ | alias load-paths=' \ | ||
+ | export D1=${bookmarked_path[1]}; \ | ||
+ | export D2=${bookmarked_path[2]}; \ | ||
+ | export D3=${bookmarked_path[3]}; \ | ||
+ | export D4=${bookmarked_path[4]}; \ | ||
+ | export D5=${bookmarked_path[5]}; \ | ||
+ | export D6=${bookmarked_path[6]}; \ | ||
+ | export D7=${bookmarked_path[7]}; \ | ||
+ | export D8=${bookmarked_path[8]}; \ | ||
+ | export D9=${bookmarked_path[9]}; \ | ||
+ | export D10=${bookmarked_path[10]}; \ | ||
+ | \ | ||
+ | export D11=${bookmarked_path[11]}; \ | ||
+ | export D12=${bookmarked_path[12]}; \ | ||
+ | export D13=${bookmarked_path[13]}; \ | ||
+ | export D14=${bookmarked_path[14]}; \ | ||
+ | export D15=${bookmarked_path[15]}; \ | ||
+ | export D16=${bookmarked_path[16]}; \ | ||
+ | export D17=${bookmarked_path[17]}; \ | ||
+ | export D18=${bookmarked_path[18]}; \ | ||
+ | export D19=${bookmarked_path[19]}; \ | ||
+ | export D20=${bookmarked_path[20]}; \ | ||
+ | \ | ||
+ | export D21=${bookmarked_path[21]}; \ | ||
+ | export D22=${bookmarked_path[22]}; \ | ||
+ | export D23=${bookmarked_path[23]}; \ | ||
+ | export D24=${bookmarked_path[24]}; \ | ||
+ | export D25=${bookmarked_path[25]}; \ | ||
+ | export D26=${bookmarked_path[26]}; \ | ||
+ | export D27=${bookmarked_path[27]}; \ | ||
+ | export D28=${bookmarked_path[28]}; \ | ||
+ | export D29=${bookmarked_path[29]}; \ | ||
+ | export D30=${bookmarked_path[30]}; \ | ||
+ | echo "Loaded user-saved paths:"; s' | ||
+ | |||
+ | |||
+ | # Aliases to load different groups of bookmarked paths: | ||
+ | |||
+ | alias lp1='. ${HOME}/dot-bashrc-amendments.sh 1' | ||
+ | alias lp2='. ${HOME}/dot-bashrc-amendments.sh 2' | ||
+ | alias lp3='. ${HOME}/dot-bashrc-amendments.sh 3' | ||
+ | alias lp4='. ${HOME}/dot-bashrc-amendments.sh 4' | ||
+ | alias lp5='. ${HOME}/dot-bashrc-amendments.sh 5' | ||
+ | |||
+ | alias lp6='. ${HOME}/dot-bashrc-amendments.sh 6' | ||
+ | alias lp7='. ${HOME}/dot-bashrc-amendments.sh 7' | ||
+ | alias lp8='. ${HOME}/dot-bashrc-amendments.sh 8' | ||
+ | alias lp9='. ${HOME}/dot-bashrc-amendments.sh 9' | ||
+ | alias lp10='. ${HOME}/dot-bashrc-amendments.sh 10' | ||
+ | |||
+ | |||
+ | # 2017-12-14 - Alias 'show non-empty bookmarks' added by Ted: | ||
+ | |||
+ | alias sne=' | ||
+ | echo | ||
+ | echo "Showing non-empty bookmarks in bookmarks group ${bookmarks_group_id}:" | ||
+ | echo | ||
+ | bookmarked_path[1]=$D1; bookmarked_path[2]=$D2; bookmarked_path[3]=$D3; bookmarked_path[4]=$D4; bookmarked_path[5]=$D5; | ||
+ | bookmarked_path[6]=$D6; bookmarked_path[7]=$D7; bookmarked_path[8]=$D8; bookmarked_path[9]=$D9; bookmarked_path[10]=$D10; | ||
+ | |||
+ | bookmarked_path[11]=$D11; bookmarked_path[12]=$D12; bookmarked_path[13]=$D13; bookmarked_path[14]=$D14; bookmarked_path[15]=$D15; | ||
+ | bookmarked_path[16]=$D16; bookmarked_path[17]=$D17; bookmarked_path[18]=$D18; bookmarked_path[19]=$D19; bookmarked_path[20]=$D20; | ||
+ | |||
+ | bookmarked_path[21]=$D21; bookmarked_path[22]=$D22; bookmarked_path[23]=$D23; bookmarked_path[24]=$D24; bookmarked_path[25]=$D25; | ||
+ | bookmarked_path[26]=$D26; bookmarked_path[27]=$D27; bookmarked_path[28]=$D28; bookmarked_path[29]=$D29; bookmarked_path[30]=$D30; | ||
+ | |||
+ | for index in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30; do | ||
+ | |||
+ | if [ -z ${bookmarked_path[$index]} ]; then | ||
+ | echo "bookmarked_path[$index] not set," >> /dev/null | ||
+ | else | ||
+ | echo "\$D${index} set to ${bookmarked_path[$index]}," | ||
+ | fi | ||
+ | done | ||
+ | echo | ||
+ | echo "Note: dot-bash-amendments script supports thirty (30) bookmarked paths per bookmarks group." | ||
+ | echo' | ||
+ | |||
+ | } # end function set_aliases_for_bookmarking() | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | function read_bookmarks_runtime_config() | ||
+ | { | ||
+ | |||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | ## VARS BEGIN | ||
+ | |||
+ | local rname="read_bookmarks_runtime_config" | ||
+ | |||
+ | local line="DEFAULT_LINE_TO_BE_READ_FROM_FILE" | ||
+ | |||
+ | local bookmarks_group_id="" | ||
+ | |||
+ | ## VARS END | ||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | |||
+ | |||
+ | |||
+ | # echo "* * * SCRIPT FUNCTION ${rname}() IMPLEMENTATION UNDERWAY * * *" | ||
+ | |||
+ | filename=${HOME}/${DIRECTORY_OF_BOOKMARKS_FILES}/${FILENAME_OF_BOOKMARKS_RUNTIME_CONFIGURATION} | ||
+ | |||
+ | if [ -e ${filename} ]; then | ||
+ | # read bookmarked paths runtime config file . . . | ||
+ | # echo "${rname}: reading directory bookmarks runtime configuration file ${filename}," | ||
+ | # cat ${filename} | ||
+ | |||
+ | read -r line < ${filename} | ||
+ | # echo "line 1 holds: ${line}" | ||
+ | |||
+ | else | ||
+ | touch ${filename} | ||
+ | if [ -e ${filename} ]; then | ||
+ | echo "1" >> ${filename} | ||
+ | else | ||
+ | echo "${SCRIPT_NAME}: - WARNING - unable to open and unable to create runtime config file!" | ||
+ | echo "${SCRIPT_NAME}: - will start with bookmarks group set to 1," | ||
+ | echo "${SCRIPT_NAME}: - presently bookmarks groups 1 through 9 supported." | ||
+ | fi | ||
+ | fi | ||
+ | |||
+ | echo ${line} | ||
+ | ## 2017-12-14 - Commented echo statement and variable for later time when | ||
+ | ## this script able to parse several settings from rc file: | ||
+ | # echo ${bookmarks_group_id} | ||
+ | |||
+ | } # end function read_bookmarks_runtime_config() | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | function write_bookmarks_runtime_config() | ||
+ | { | ||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | ## 2017-12-14 - Script contributor Ted noting that this function to | ||
+ | ## write the bookmarks run-time config file is nearly identical to | ||
+ | ## the function to read this same file. Wondering if there's an | ||
+ | ## elegant way to combine the two functions? - TMH | ||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | |||
+ | echo "* * * Script function write_bookmarks_runtime_config() implementation underway * * *" | ||
+ | echo "called with bookmarks group identifier '${1}'," | ||
+ | |||
+ | filename=${HOME}/${DIRECTORY_OF_BOOKMARKS_FILES}/${FILENAME_OF_BOOKMARKS_RUNTIME_CONFIGURATION} | ||
+ | |||
+ | if [ -e ${filename} ]; then | ||
+ | # write one value bookmarked paths runtime config file, overwriting all data in this file: | ||
+ | echo "${SCRIPT_NAME}: writing directory bookmarks runtime configuration file . . ." | ||
+ | echo ${1} > ${filename} | ||
+ | else | ||
+ | touch ${filename} | ||
+ | if [ -e ${filename} ]; then | ||
+ | echo ${1} > ${filename} | ||
+ | else | ||
+ | echo "${SCRIPT_NAME}: - WARNING - unable to open and unable to create runtime config file!" | ||
+ | echo "${SCRIPT_NAME}: - will start with bookmarks group set to 1," | ||
+ | echo "${SCRIPT_NAME}: - presently bookmarks groups 1 through 9 supported." | ||
+ | fi | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | function read_bookmarks_file() | ||
+ | { | ||
+ | |||
+ | # echo "*** Routine 'read_bookmarks_file' development in progress, ***" | ||
+ | # echo "first two arguments from caller are '$1' and '$2'," | ||
+ | # echo "variable \${SED} holds '${SED}'," | ||
+ | |||
+ | local bookmarked_paths_group=${2} | ||
+ | |||
+ | REGEX="[1-9]" | ||
+ | # if [[ ${bookmarked_paths_group} =~ [1-5] ]] ; then | ||
+ | if [[ ${bookmarked_paths_group} =~ ${REGEX} ]] ; then | ||
+ | echo "caller requests valid bookmarks file identified by '${2}', which is in the range ${BOOKMARKS_GROUPS_SUPPORTED}" | ||
+ | else | ||
+ | echo "- NOTE - caller requests unsupported or unknown bookmarks file identified by '${2}'," | ||
+ | echo "- NOTE - defaulting to read bookmarked directories in bookmarks group 1," | ||
+ | bookmarked_paths_group=1 | ||
+ | fi | ||
+ | |||
+ | ## bookmarks_filename=$(echo ${FILENAME_FORM_OF_BOOKMARKED_PATHS} | ${SED} s/nn/0${2}/) | ||
+ | bookmarks_filename=$(echo ${FILENAME_FORM_OF_BOOKMARKED_PATHS} | ${SED} s/nn/0${bookmarked_paths_group}/) | ||
+ | |||
+ | echo "will read bookmarks from file named ${bookmarks_filename}," | ||
+ | |||
+ | ## * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | ||
+ | ## NOTE - had trouble getting these export statements to fly . . . | ||
+ | ## | ||
+ | ## Ahh finally makes sense now 2017 DEC, these export statements | ||
+ | ## don't express explicit variable names. That is, bash must see | ||
+ | ## a shell script declared array element as something other than a | ||
+ | ## valid variable name: - TMH | ||
+ | ## * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | ||
+ | |||
+ | # export ${bookmarked_path[0]} | ||
+ | # export ${bookmarked_path[1]} | ||
+ | # export ${bookmarked_path[2]} | ||
+ | # export ${bookmarked_path[3]} | ||
+ | # export ${bookmarked_path[4]} | ||
+ | # export ${bookmarked_path[5]} | ||
+ | |||
+ | |||
+ | |||
+ | ##---------------------------------------------------------------------- | ||
+ | ## STEP: retrieve saved paths from previous user session | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | # filename="${HOME}/.bash_paths_saved" | ||
+ | # filename="${HOME}/bookmarked-paths.txt" . . . commmented 2017-12-02 SAT | ||
+ | filename=${HOME}/${DIRECTORY_OF_BOOKMARKS_FILES}/${bookmarks_filename} | ||
+ | |||
+ | ## 2017-02-09 THU - To be added, support for storing and perusing multiple directory bookmarks files: | ||
+ | filename__list_of_bookmark_files="${HOME}/bookmarked-path-files.txt" | ||
+ | |||
+ | |||
+ | |||
+ | # REFERENCE: http://tldp.org/LDP/abs/html/arrays.html | ||
+ | |||
+ | declare -a bookmarked_path=() | ||
+ | |||
+ | |||
+ | |||
+ | if [ -e ${filename} ]; then | ||
+ | bookmarked_path=( $(cat "$filename") ) # Stores contents of this script | ||
+ | #+ ($bash_settings_local) in an array. | ||
+ | else | ||
+ | # echo "$O: no local bash settings file named ${bash_settings_file} found," > /dev/null | ||
+ | echo "${SCRIPT_NAME}: - WARNING - direcory bookmarks file named ${filename} not found!" | ||
+ | echo "${SCRIPT_NAME}: - not able to read in bookmarked directories from this file," | ||
+ | echo "${SCRIPT_NAME}: - but creating to hold paths going forward . . ." | ||
+ | touch ${filename} | ||
+ | return | ||
+ | fi | ||
+ | |||
+ | |||
+ | if [ ]; then | ||
+ | echo "" | ||
+ | echo "- DIAG START -" | ||
+ | echo "after reading bookmarks file," | ||
+ | echo "\${bookmarked_path[1]} holds '${bookmarked_path[1]}'" | ||
+ | echo "\${bookmarked_path[2]} holds '${bookmarked_path[2]}'" | ||
+ | echo "\${bookmarked_path[3]} holds '${bookmarked_path[3]}'" | ||
+ | echo "- DIAG END -" | ||
+ | echo "" | ||
+ | fi | ||
+ | |||
+ | |||
+ | # 2006-11-27 | ||
+ | # Prior to storing user-saved paths in a local file, path | ||
+ | # variables were assigned zero-length strings and exported like this: | ||
+ | # | ||
+ | # export D1="" | ||
+ | # | ||
+ | # Now these variables are exported the same way but assigned | ||
+ | # differently . . . | ||
+ | |||
+ | # echo "reading saved paths from file, skipping first place-holder token '${bookmarked_path[0]}' . . ." | ||
+ | |||
+ | export D1=${bookmarked_path[1]} | ||
+ | export D2=${bookmarked_path[2]} | ||
+ | export D3=${bookmarked_path[3]} | ||
+ | export D4=${bookmarked_path[4]} | ||
+ | export D5=${bookmarked_path[5]} | ||
+ | |||
+ | export D6=${bookmarked_path[6]} | ||
+ | export D7=${bookmarked_path[7]} | ||
+ | export D8=${bookmarked_path[8]} | ||
+ | export D9=${bookmarked_path[9]} | ||
+ | export D10=${bookmarked_path[10]} | ||
+ | |||
+ | export D11=${bookmarked_path[11]} | ||
+ | export D12=${bookmarked_path[12]} | ||
+ | export D13=${bookmarked_path[13]} | ||
+ | export D14=${bookmarked_path[14]} | ||
+ | export D15=${bookmarked_path[15]} | ||
+ | |||
+ | export D16=${bookmarked_path[16]} | ||
+ | export D17=${bookmarked_path[17]} | ||
+ | export D18=${bookmarked_path[18]} | ||
+ | export D19=${bookmarked_path[19]} | ||
+ | export D20=${bookmarked_path[20]} | ||
+ | |||
+ | export D21=${bookmarked_path[21]} | ||
+ | export D22=${bookmarked_path[22]} | ||
+ | export D23=${bookmarked_path[23]} | ||
+ | export D24=${bookmarked_path[24]} | ||
+ | export D25=${bookmarked_path[25]} | ||
+ | |||
+ | export D26=${bookmarked_path[26]} | ||
+ | export D27=${bookmarked_path[27]} | ||
+ | export D28=${bookmarked_path[28]} | ||
+ | export D29=${bookmarked_path[29]} | ||
+ | export D30=${bookmarked_path[30]} | ||
+ | |||
+ | |||
+ | if [ ]; then | ||
+ | echo "" | ||
+ | echo "- DIAG START -" | ||
+ | echo "after exporting \$D1..\$D30," | ||
+ | echo "\$D1 holds '$D1'," | ||
+ | echo "\$D2 holds '$D2'," | ||
+ | echo "\$D3 holds '$D3'," | ||
+ | echo "- DIAG END -" | ||
+ | echo "" | ||
+ | fi | ||
+ | |||
+ | |||
+ | } # end function read_bookmarks_file() | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | function clear_paths_function() | ||
+ | { | ||
+ | |||
+ | # echo "clear_paths_function: clearing bookmarked paths in current shell, setting \$D1..\$D30 to ''," | ||
+ | |||
+ | export D1=""; export D2=""; export D3=""; export D4=""; export D5=""; | ||
+ | export D6=""; export D7=""; export D8=""; export D9=""; export D10=""; | ||
+ | |||
+ | export D11=""; export D12=""; export D13=""; export D14=""; export D15=""; | ||
+ | export D16=""; export D17=""; export D18=""; export D19=""; export D20=""; | ||
+ | |||
+ | export D21=""; export D22=""; export D23=""; export D24=""; export D25=""; | ||
+ | export D26=""; export D27=""; export D28=""; export D29=""; export D30=""; | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | function amend_path_var_with_windows_paths() | ||
+ | { | ||
+ | ##---------------------------------------------------------------------- | ||
+ | ## 2021-05-21 FRI - This shell function added to dot-bashrc-amendments.sh | ||
+ | ## to factor PATH envirnment variables amendments which add | ||
+ | ## Windows 10 paths contaning spaces. | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | if [ ${FLAG__AMEND_PATH_WITH_WINDOWS_PATH} -eq 1 ]; then | ||
+ | |||
+ | # 2021-04-13 - added for Windows 10, ARM toolchain use: | ||
+ | PATH=/c/Users/thavelka/bin/arm-gcc/8-2019-q3-update/bin:"${PATH}" | ||
+ | PATH=/c/Users/thavelka/bin/arm-gcc/8-2019-q3-update/arm-none-eabi/bin:"${PATH}" | ||
+ | |||
+ | ## 2021-05-12 - added for Windows 10, Python 2.7.16 (Ted needs this to precede Python 3.9.5 path in envvar): | ||
+ | # PATH=/c/Python27:"${PATH}" | ||
+ | |||
+ | # 2021-04-15 - added for Windows 10, OpenOCD: | ||
+ | PATH=/c/Users/thavelka/bin/OpenOCD-20210407-0.10.0/bin:"${PATH}" | ||
+ | |||
+ | # 2021-05-11 - added for Windows 10, Nordic nRF command line tools namely mergehex: | ||
+ | PATH="c:\Program Files\Nordic Semiconductor\nrf-command-line-tools\bin":"${PATH}" | ||
+ | |||
+ | # 2021-05-21 - added for Oracle VirtualBox utilities: | ||
+ | PATH="C:\Program Files\Oracle\VirtualBox":"${PATH}" | ||
+ | |||
+ | # 2018-01-19 - add a pattern to the path to avoid multple path variable | ||
+ | # amendments per shell session: | ||
+ | PATH="${PATH}:$DBM_WATERMARK" | ||
+ | else | ||
+ | echo "not adding Windows paths to \$PATH envvar," | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | function amend_path_variable() | ||
+ | { | ||
+ | ##---------------------------------------------------------------------- | ||
+ | ## PURPOSE: amend user's $PATH environment variable | ||
+ | ## | ||
+ | ## NEED: to add logic so that for a given shell session, when this | ||
+ | ## script called a second or successive time it does not amend the | ||
+ | ## $PATH variable with duplicate paths. Need a test . . . - TMH | ||
+ | ## | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | string=`echo $PATH | grep $DBM_WATERMARK` | ||
+ | |||
+ | if [ -z "$string" ] | ||
+ | then | ||
+ | path_as_found=${PATH} | ||
+ | |||
+ | # Amending the default path variable: | ||
+ | |||
+ | # PATH="/usr/bin:${PATH}" | ||
+ | PATH="${PATH}":/sbin | ||
+ | PATH="${PATH}":/usr/sbin | ||
+ | PATH="${PATH}":/opt/bin | ||
+ | PATH="${PATH}":/opt/cross/bin | ||
+ | PATH="${PATH}":/opt/nxp/lpcxpresso-8p2p2/lpcxpresso/tools/bin | ||
+ | PATH="${PATH}":/opt/nxp/lpcxpresso-8p2p2/lpcxpresso | ||
+ | PATH="${PATH}":/opt/cross/x-tools/arm-unknown-linux-gnueabi/bin | ||
+ | # PATH="${PATH}":. | ||
+ | PATH="${PATH}":${HOME}/bin | ||
+ | PATH="${PATH}":/usr/local/mysql/bin | ||
+ | PATH="${PATH}":/usr/lib/xscreensaver | ||
+ | PATH="${PATH}":/etc/init.d | ||
+ | |||
+ | # 2014-01-24 . . . | ||
+ | PATH="${PATH}":/var/opt/sam-ba_cdc_cdc_linux | ||
+ | |||
+ | # 2017-12-04 . . . | ||
+ | PATH="${PATH}":~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin | ||
+ | |||
+ | |||
+ | # 2021-05-21 - call to new shell function to factor Windows path amendments | ||
+ | # into that separate function: | ||
+ | amend_path_var_with_windows_paths | ||
+ | |||
+ | |||
+ | |||
+ | # 2018-01-19 - add a pattern to the path to avoid multple path variable | ||
+ | # amendments per shell session: | ||
+ | PATH="${PATH}:$DBM_WATERMARK" | ||
+ | |||
+ | else | ||
+ | echo "\$PATH variable already amended, directory book-marker leaving untouched." | ||
+ | fi | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | function restore_path_variable_to_as_found() | ||
+ | { | ||
+ | PATH=$path_as_found | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ##---------------------------------------------------------------------- | ||
+ | ## | ||
+ | ## SECTION - main line code of dot-bash-amendments.sh | ||
+ | ## | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | echo "starting," | ||
+ | |||
+ | ## Following test fails when script passed an argument, should succeed . . . | ||
+ | #if [[ "$ARGC" -eq "1" ]]; then | ||
+ | # echo "called with first argument set to '$1'," | ||
+ | #fi | ||
+ | |||
+ | ## Following test succeeds: | ||
+ | if [[ "$#" -eq "1" ]]; then | ||
+ | echo "called with first argument set to '$1'," | ||
+ | # echo "calling 'read directory bookmarks file' with no arguments . . ." | ||
+ | # read_bookmarks_file | ||
+ | fi | ||
+ | |||
+ | |||
+ | |||
+ | ## Note: single brackets in the following test work, double brackets | ||
+ | ## seem to evaulate differently, may be because we're using a shell | ||
+ | ## file test . . . | ||
+ | |||
+ | bookmarks_dir="${HOME}/${DIRECTORY_OF_BOOKMARKS_FILES}" | ||
+ | |||
+ | # echo "- DEV - constructed bookmarked paths directory which holds '$bookmarks_dir'," | ||
+ | ## 2017-12-03 - DISCOVERY: hey why does bash 'file exists' test return true when | ||
+ | ## + the argument to the file test is a zero-length string? Or undefined variable? | ||
+ | ## + Does Mendel Cooper's guide explain this behavior? There was a type | ||
+ | ## + just below with 'bookmarks_dir' spelled 'booksmarks_dir' . . . - TMH | ||
+ | |||
+ | if [ -e ${bookmarks_dir} ]; then | ||
+ | # echo "found directory '${bookmarks_dir}' for bookmarked path files, not creating this directory." | ||
+ | echo "found directory '${bookmarks_dir}' for bookmarked path files, not creating this directory." > /dev/null | ||
+ | else | ||
+ | # echo "creating directory ${bookmarks_dir} . . ." | ||
+ | mkdir -pv ${bookmarks_dir} | ||
+ | fi | ||
+ | |||
+ | |||
+ | |||
+ | ##---------------------------------------------------------------------- | ||
+ | ## STEP: set shell aliases . . . moved to two functions of this script | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | set_aliases | ||
+ | |||
+ | set_aliases_for_bookmarking | ||
+ | |||
+ | # echo "- DIAG BEGIN - calling builtin shell command 'alias' to check aliases just set:" | ||
+ | # alias | ||
+ | # echo "- DIAG END -" | ||
+ | |||
+ | |||
+ | |||
+ | ##---------------------------------------------------------------------- | ||
+ | ## STEP - read file holding bookmarked paths | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | # echo "- DIAG BEGIN - calling function (not alias) to clear any directory bookmarks . . ." | ||
+ | clear_paths_function | ||
+ | # echo "- DIAG END - \$D1 holds '$D1'" | ||
+ | |||
+ | ## * https://stackoverflow.com/questions/806906/how-do-i-test-if-a-variable-is-a-number-in-bash | ||
+ | |||
+ | re='^[0-9]+$' | ||
+ | if [[ $1 =~ $re ]]; then | ||
+ | if [ "$#" -gt 0 ]; then | ||
+ | bookmarks_group_id=${1} | ||
+ | else | ||
+ | bookmarks_group_id=1 | ||
+ | fi | ||
+ | fi | ||
+ | |||
+ | |||
+ | |||
+ | ##---------------------------------------------------------------------- | ||
+ | ## STEP - check for valid bookmarks group identifier, should be | ||
+ | ## an integer value between 1 and 9 for now, 2017 December: | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | bookmarked_paths_group_in_script_main_line=${1} | ||
+ | |||
+ | if [[ ${bookmarked_paths_group_in_script_main_line} =~ [1-9] ]] ; then | ||
+ | echo "script called with bookmarks group number ${bookmarked_paths_group_in_script_main_line}, in range ${BOOKMARKS_GROUPS_SUPPORTED}" | ||
+ | echo "which we support as of 2017 December." | ||
+ | write_bookmarks_runtime_config ${bookmarked_paths_group_in_script_main_line} | ||
+ | else | ||
+ | if [ -z ${bookmarked_paths_group_in_script_main_line} ]; then | ||
+ | # echo "setting bookmarks group to default value of 1, first group of bookmarks among ${BOOKMARKS_GROUPS_SUPPORTED}" | ||
+ | # bookmarked_paths_group_in_script_main_line=1 | ||
+ | |||
+ | echo "script called without bookmarked paths group specified," | ||
+ | echo "looking for last-used bookmarks group in dot-bash-amendments run-time config file . . ." | ||
+ | bookmarks_group_id=$(read_bookmarks_runtime_config) | ||
+ | echo "- DEV - from rc file read bookmarks group id '${bookmarks_group_id}'," | ||
+ | else | ||
+ | echo "- NOTE - script called with unsupported bookmarks group id," | ||
+ | echo "- NOTE - id we got is '${bookmarked_paths_group_in_script_main_line}'," | ||
+ | echo "- NOTE - setting bookmarks group to default value of 1, first group of bookmarks among ${BOOKMARKS_GROUPS_SUPPORTED}" | ||
+ | bookmarked_paths_group_in_script_main_line=1 | ||
+ | fi | ||
+ | fi | ||
+ | |||
+ | |||
+ | # echo "calling bash amendments function to read run-time config file . . ." | ||
+ | # read_bookmarks_runtime_config | ||
+ | |||
+ | echo "calling 'read directory bookmarks file' with arguments '$0 ${bookmarks_group_id}' . . ." | ||
+ | read_bookmarks_file $0 ${bookmarks_group_id} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ## See http://tldp.org/LDP/abs/html/testconstructs.html, example script 7-1: | ||
+ | |||
+ | if [ ]; then | ||
+ | echo "" | ||
+ | echo "- DIAG START in main-line code of script -" | ||
+ | echo "back from call to read_bookmarks_file() which exports \$D1..\$D30," | ||
+ | echo "\$D1 holds '$D1'," | ||
+ | echo "\$D2 holds '$D2'," | ||
+ | echo "\$D3 holds '$D3'," | ||
+ | echo "- DIAG END in main-line code of script -" | ||
+ | echo "" | ||
+ | fi | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ##---------------------------------------------------------------------- | ||
+ | ## STEP - amend environment variables | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | # | ||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | ## NOTE - path environment variable amendments, mostly for | ||
+ | ## work on Debian and Ubuntu Linux based systems | ||
+ | ## | ||
+ | ## NOTE - when $PATH variable includes present working directory, e.g. | ||
+ | ## "." then buildroot 2.x complains and bails during project | ||
+ | ## compilation. For smooth buildroot project builds, keep the | ||
+ | ## current working directory commented out. Safer to run programs | ||
+ | ## in cwd using ./[program_name] syntax anyway . . . - TMH | ||
+ | ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | # | ||
+ | |||
+ | # Amending the default path variable: | ||
+ | |||
+ | if [ "$1" == "restore-path-variable" ]; then | ||
+ | echo "- dbm - RESTORING PATH VARIABLE . . ." | ||
+ | restore_path_variable_to_as_found | ||
+ | else | ||
+ | amend_path_variable | ||
+ | fi | ||
+ | |||
+ | |||
+ | # Concurrent Versions System (CVS) variables: | ||
+ | |||
+ | CVSROOT="/home/fulano/cvs" | ||
+ | CVS_RSH="" | ||
+ | # export EDITOR=/usr/bin/vim . . . commented out 2012-01-25 - TMH | ||
+ | export EDITOR=/usr/bin/vi | ||
+ | HISTSIZE=1000 | ||
+ | HISTFILESIZE=1000 | ||
+ | |||
+ | # Variables as shortcuts: | ||
+ | |||
+ | archive=${HOME}/archive | ||
+ | |||
+ | # Enable tsocks transparent proxy service by setting this environment | ||
+ | # variable: | ||
+ | |||
+ | ## Note - needed back in 2004, 2005 for to enable proxy server | ||
+ | ## settings . . . | ||
+ | |||
+ | # export LD_PRELOAD=/lib/libtsocks.so.1.8 | ||
+ | # export LD_PRELOAD=/usr/lib/libtsocks.so.1.8 | ||
+ | |||
+ | |||
+ | |||
+ | ##---------------------------------------------------------------------- | ||
+ | ## 2014-02-19 - added by Ted . . . | ||
+ | ## | ||
+ | ## STEP - cross compile variables to export | ||
+ | ## | ||
+ | ## reference http://www.x.org/wiki/CrossCompilingXorg/ | ||
+ | ##---------------------------------------------------------------------- | ||
+ | |||
+ | # export CROSS_COMPILE=arm-none-linux-gnueabi- | ||
+ | export CROSS_COMPILE=arm-unknown-linux-gnueabi- | ||
+ | |||
+ | export SESSION_MANAGER=lightdm | ||
+ | |||
+ | |||
+ | # . ~/.bookmarked-paths/set-proxies.sh | ||
+ | |||
+ | |||
+ | echo "done." | ||
+ | |||
+ | |||
+ | |||
+ | # EOF ( end of file ) | ||
+ | |||
+ | --> | ||
<!-- comment --> | <!-- comment --> |
Revision as of 00:11, 5 June 2021
2020-11-02
For now, the following is a minimal .bashrc start up script, which matches the one on this wiki's home page in the section on shell scripting in Unix and Unix-like environments:
#!/usr/bin if [ -e $HOME/Desktop/dot-bashrc-amendments.sh ]; then . $HOME/Desktop/dot-bashrc-amendments.sh fi # --- EOF ---