
重複パスを削除するための次のロジックは、.bash_aliases
新しいターミナルを開いたときに正常に機能します。
# 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
ただし、tmux を起動したり、新しいペインを開いたりすると、エクスポートが重複します。
次の例では、上記のループの前にエクスポートが実行されます。
export PATH=$HOME/bin:$HOME/.local/bin:$PATH
結果:
/home/bob/.local/bin
/home/bob/bin
/home/bob/bin
/home/bob/.local/bin
...
再リソースすると.bash_aliases
重複が削除されます。
各パスの重複が 1 つ以上作成されることはありません。
何が起こっているのかについてのアイデアや、問題を追跡する方法についての提案があれば、ぜひ教えてください。
答え1
投稿した直後に答えを見つけましたが、必要な人がいる場合に備えて残しておきます。
次の行を に入力します.tmux.conf
。
set-option -g default-command bash