Bash-funktion til at tilføje mappe til $PATH kun hvis den ikke allerede er der

Er der nogen, der har skrevet en bash-funktion til at tilføje en mappe til $PATH, kun hvis den ikke allerede er der?

Der findes flere eksempler på bash-funktioner, der kan tilføje en mappe til $PATH, kun hvis den ikke allerede er der, og en simpel metode er at bruge en funktion som add_to_path().

Er der nogen, der har skrevet en bash-funktion til at tilføje en mappe til $PATH, kun hvis den ikke allerede er der?

Ja, der findes flere eksempler på bash-funktioner, der kan tilføje en mappe til $PATH, kun hvis den ikke allerede er der. Her er en simpel og effektiv måde at gøre det på:

add_to_path() {
    if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
        PATH="${PATH:+"$PATH:"}$1"
    fi
}

Forklaring af funktionen:

  • if [ -d "$1" ]: Tjekker om argumentet er en gyldig mappe.
  • [[ ":$PATH:" != *":$1:"* ]]: Tjekker om mappen allerede er i $PATH. Ved at tilføje koloner (:) før og efter $PATH og $1, sikrer vi, at vi kun matcher hele mappestier.
  • PATH="${PATH:+"$PATH:"}$1": Tilføjer mappen til $PATH, hvis den ikke allerede er der. ${PATH:+...} sikrer, at der kun tilføjes en kolon, hvis $PATH allerede har en værdi.

Sådan bruger du funktionen:

add_to_path /ny/mappe/stier

Dette vil tilføje /ny/mappe/stier til $PATH, hvis den ikke allerede er der.

For at gøre funktionen permanent tilgængelig, kan du tilføje den til din ~/.bashrc eller ~/.bash_profile fil:

echo 'add_to_path() {
    if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
        PATH="${PATH:+"$PATH:"}$1"
    fi
}' >> ~/.bashrc
source ~/.bashrc

Dette vil sikre, at funktionen er tilgængelig i alle dine bash-sessioner.