.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
我发布后立即找到了答案,但我会将其保留下来以防有人需要。
将以下行放入您的.tmux.conf
:
set-option -g default-command bash