Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # add2path.bash
- # Script is adding current folder or folder passed as text argument to user environment variable.
- #
- # Autor: Dawid
- # Date: 16.01.2023
- # Version: 0.94
- #
- # Usage and installation:
- # 1. Create file app2path.bash
- # cd ~/
- # touch ./app2path.bash
- #
- # 2. Paste code inside this file.
- #
- # 3. Change file privilege to allow execute
- # chmod 774 ./app2path.bash # 7 - full access, 4 - only read
- #
- # 4. Execute the script with proper parameters
- # ./app2path.bash --help
- # ./app2path.bash -add-current
- # Okresla wartosc zmiennej srodowiskowej PATH
- USER_PROFILE_FILE=/home/$USER/tmp
- # USER_PROFILE_FILE=/home/$USER/.bashrc
- # USER_PROFILE_FILE=/etc/enviroment
- # USER_PROFILE_FILE=/etc/profile
- ### Kod funkcji skryptu
- checkIfStringContainsOtherString()
- {
- if [[ $PATH == *"$(pwd)"* ]]; then
- return 1
- else
- return 0
- fi
- }
- checkIfStringContainsOtherString_passedAsArgument()
- {
- if [[ $PATH == *"$2"* ]]; then
- return 1
- else
- return 0
- fi
- }
- function addDirToVariable()
- {
- CURRENT_DIR=$(pwd)
- NEW_PATH_VALUE_AFTER_ADD=$PATH:$CURRENT_DIR
- }
- function addDirToVariable_passedArgument()
- {
- CURRENT_DIR=$2
- NEW_PATH_VALUE_AFTER_ADD=$PATH:$CURRENT_DIR
- }
- function removeDirFromVariable()
- {
- # Wytnij ze stringa wartosc zmiennej $(pwd)
- NEW_PATH_VALUE_AFTER_REMOVE=$(echo $PATH | sed "s/$(pwd)/ /")
- # rezultatem jest wartosc nowej zmiennej NEW_PATH_VALUE_AFTER_REMOVE
- }
- function removeDirFromVariable_passedArgument()
- {
- # Wytnij ze stringa wartosc zmiennej $2
- NEW_PATH_VALUE_AFTER_REMOVE=$(echo $PATH | sed "s/$2/ /")
- # rezultatem jest wartosc nowej zmiennej NEW_PATH_VALUE_AFTER_REMOVE
- }
- function expandRelativePathToAbsolute()
- {
- # readlink - print resolved symbolic links or canonical file names
- # realpath - return the canonicalised absolute pathname
- EXPANDED_PATH=$(realpath $PASSED_ARG)
- }
- function setNewPathVariableInSystem()
- {
- # sed -i 's/old-text/new-text/g'
- echo DEBUG: sed -i 's/$PATH/$NEW_PATH_VALUE_AFTER_ADD/g' $USER_PROFILE_FILE
- sed -i 's/$PATH/$NEW_PATH_VALUE_AFTER_ADD/g' $USER_PROFILE_FILE
- echo "New path variable has been set in the user system environment variable."
- }
- function setNewPathVariableInSystem_afterRemove()
- {
- # sed -i 's/old-text/new-text/g'
- echo DEBUG: sed -i 's/$PATH/$NEW_PATH_VALUE_AFTER_REMOVE/g' $USER_PROFILE_FILE
- sed -i 's/$PATH/$NEW_PATH_VALUE_AFTER_REMOVE/g' $USER_PROFILE_FILE
- echo "New path variable has been set in the user system environment variable."
- }
- function printApplicationUsage()
- {
- echo -e "
- \033[1mAplication path2add usage:\033[0m
- -add-current \t\t Add current directory if it doesn`t already exist
- -remove-current \t Remove current directory if it doesn`t already exist
- -add-argument \t\t [DIR or PATH NAME] Remove current directory if it doesn`t already exist
- -remove-argument \t [DIR or PATH NAME] Remove directory passed as launch argument if it doesn`t exist
- --help \t\t\t Print application usage
- \033[1mExamples of usage:\033[0m
- add2path \t\t -add-current
- add2path \t\t -add-argument /home/YOUR-ACCOUNT-NAME/testing
- "
- }
- ### Kod skryptu
- case ${1} in
- -add-current) # Dodaj folder w ktorym uzytkownik sie obecnie znajduje do zmiennej srodowiskowej PATH
- # Sprawdz czy katalog w ktorym uzytkownik sie obecnie znajduje jest juz dodany do zmiennej srodowiskowej $PATH
- dirAlreadyAdded=$(checkIfStringContainsOtherString)
- # Jeżeli folder nie jest jeszcze dodany to ...
- if [[ $dirAlreadyAdded -eq 0 ]]; then
- # ... dodaj taki folder do tymczasowej zmiennej
- $(addDirToVariable)
- # Wartosc tymczasowej zmiennej dodaj do zmiennej PATH w systemie.
- setNewPathVariableInSystem
- fi
- ;;
- -remove-current) # Usun folder w ktorym uzytkownik obecnie sie znajduje ze zmiennej srodowiskowej PATH
- # Sprawdz czy katalog w ktorym uzytkownik obecnie sie znajduje jest juz dodany do zmiennj PATH
- dirAlreadyAdded=$(checkIfStringContainsOtherString_passedAsArgument)
- if [[ $dirAlreadyAdded -eq 1 ]]; then
- $(removeDirFromVariable)
- setNewPathVariableInSystem
- fi
- ;;
- -add-argument) # Dodaj folder przekazany jako drugi argument uruchomienia aplikacji do zmiennej srodowiskowej PATH
- PASSED_ARG=${2}
- if [[ -d $PASSED_ARG ]]; then
- expandRelativePathToAbsolute # # Zmienna PASSED_ARG jest ustawiona i przechowuje folder podany przez uzytkownika
- # Sprawdz czy katalog przekazany jako drugi argument urch. app. juz sie znajduje w zmiennj PATH
- dirAlreadyAdded=$(checkIfStringContainsOtherString_passedAsArgument)
- if [[ $dirAlreadyAdded -eq 0 ]]; then
- $(addDirToVariable_passedArgument)
- setNewPathVariableInSystem
- else
- printApplicationUsage
- fi
- fi
- ;;
- -remove-argument) # Usun folder przekazany jako drugi argument uruchomienia aplikacji ze zmiennej srodowiskowej PATH.
- PASSED_ARG=${2}
- if [ -d $PASSED_ARG ]; then
- expandRelativePathToAbsolute # Zmienna PASSED_ARG jest ustawiona i przechowuje folder podany przez uzytkownika
- dirAlreadyAdded=$(checkIfStringContainsOtherString_passedAsArgument)
- if [[ $dirAlreadyAdded -eq 1 ]]; then
- $(removeDirFromVariable_passedArgument)
- setNewPathVariableInSystem
- else
- printApplicationUsage
- fi
- fi
- ;;
- --help) # Wyswietl mozliwe parametry startu alikacji.
- printApplicationUsage
- exit 0 # Zakonczenie aplikacji z kodem bledu "0", czyli brak bledow.
- ;;
- *) # Ten przypadek jest wykonywany w przypadku gdy zaden z powyzszych parametrow nie zostal przez uzytkownika podany. Czyli uzytkownik nie podal parametru badz podal je blednie.
- printApplicationUsage
- exit 1 # Zakonczenie aplikacji i ustawienie kodu jej zakonczenia roznego o "0". Gdzie kod "0" oznacza brak bledu.
- ;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement