Die folgende Logik .bash_aliases
zum Entfernen doppelter Pfade funktioniert beim Öffnen eines neuen Terminals einwandfrei:
# prune duplicate paths
PATHS=("PATH" "LD_LIBRARY_PATH" "C_INCLUDE_PATH")
for P in "${PATHS[@]}"; do
source $HOME/bin/prune_paths $P
done
~/bin/prunepaths
#!/bin/bash
path_name=$1
curr_paths=${!path_name}
# split paths string into an array of paths
IFS=':' read -ra path_array <<< "$curr_paths"
# filter out duplicates and elements containing single quotes
declare -a unique_path_array=()
for element in "${path_array[@]}"; do
if [[ ! " ${unique_path_array[@]} " =~ " ${element} " ]] && [[ ! "$element" =~ "'" ]]; then
unique_path_array+=("$element")
fi
done
# concatenate unique paths
final_paths=$(IFS=':'; echo "${unique_path_array[*]}")
export $path_name=$final_paths
Wenn ich jedoch tmux starte oder einen neuen Bereich öffne, werden die Exporte dupliziert.
Das folgende Beispiel für einen Export wurde vor der obigen Schleife durchgeführt:
export PATH=$HOME/bin:$HOME/.local/bin:$PATH
Ergebnisse in:
/home/bob/.local/bin
/home/bob/bin
/home/bob/bin
/home/bob/.local/bin
...
Wenn ich die Ressourcen erneuere, .bash_aliases
werden die Duplikate entfernt.
Es wird nie mehr als ein Duplikat jedes Pfads erstellt.
Ich bin für alle Ideen dankbar, was los ist, oder für Vorschläge, wie ich das Problem aufspüren kann.
Antwort1
Ich habe die Antwort direkt nach dem Posten gefunden, lasse sie aber stehen, falls jemand sie braucht.
Fügen Sie die folgende Zeile in Ihre ein .tmux.conf
:
set-option -g default-command bash