1414LINGLONG_ROOT=" @LINGLONG_ROOT@"
1515LINGLONG_EXPORT_PATH=" @LINGLONG_EXPORT_PATH@"
1616
17- # 规范化 LINGLONG_DATA_DIR:移除末尾可能存在的斜杠
1817LINGLONG_DATA_DIR=" ${LINGLONG_ROOT} /entries/share"
19- LINGLONG_DATA_DIR=${LINGLONG_DATA_DIR%/ }
2018
2119# --- 辅助函数:安全地添加路径到 XDG_DATA_DIRS ---
2220# 这个函数会检查路径是否已存在,如果不存在则添加。
@@ -26,21 +24,14 @@ _add_path_to_xdg_data_dirs() {
2624 local path_to_add=" ${1%/ } " # 确保要添加的路径没有末尾斜杠
2725 local position=" ${2:- start} " # 默认添加到开头
2826
29- # 确保 XDG_DATA_DIRS 变量已定义,如果未定义则初始化为空字符串
30- : " ${XDG_DATA_DIRS:= } "
31-
3227 # 检查路径是否已存在于 XDG_DATA_DIRS 中
3328 # 在 XDG_DATA_DIRS 两端加上冒号,以确保精确匹配(无论路径在开头、中间还是结尾)
3429 if [[ " :${XDG_DATA_DIRS} :" == * " :${path_to_add} :" * ]]; then
3530 # 路径已存在,不执行任何操作
3631 return 0
3732 fi
3833
39- # 如果路径不存在,则根据指定位置添加
40- if [[ -z " $XDG_DATA_DIRS " ]]; then
41- # 如果 XDG_DATA_DIRS 当前为空,直接赋值
42- XDG_DATA_DIRS=" $path_to_add "
43- elif [[ " $position " == " start" ]]; then
34+ if [[ " $position " == " start" ]]; then
4435 # 添加到开头
4536 XDG_DATA_DIRS=" $path_to_add :$XDG_DATA_DIRS "
4637 elif [[ " $position " == " end" ]]; then
@@ -49,21 +40,19 @@ _add_path_to_xdg_data_dirs() {
4940 fi
5041}
5142
43+ # 如果 XDG_DATA_DIRS 为空,则先设置为 /usr/local/share:/usr/share
44+ # 参考: https://specifications.freedesktop.org/basedir-spec/latest
45+ _add_path_to_xdg_data_dirs " /usr/local/share" " end"
46+ _add_path_to_xdg_data_dirs " /usr/share" " end"
47+
48+ # 将 LINGLONG_DATA_DIR 添加到 XDG_DATA_DIRS 的末尾(如果不存在)
49+ _add_path_to_xdg_data_dirs " $LINGLONG_DATA_DIR " " end"
50+
5251# 如果有自定义 LINGLONG_EXPORT_PATH(默认为 "share"),将自定义路径添加到 XDG_DATA_DIRS
5352if [ " $LINGLONG_EXPORT_PATH " != " share" ]; then
54- # 规范化 CUSTOM_DATA_DIR:移除末尾可能存在的斜杠
5553 CUSTOM_DATA_DIR=" ${LINGLONG_ROOT} /entries/${LINGLONG_EXPORT_PATH} "
56- CUSTOM_DATA_DIR=${CUSTOM_DATA_DIR%/ }
5754 _add_path_to_xdg_data_dirs " $CUSTOM_DATA_DIR " " start"
5855fi
5956
60- # 2. 处理 LINGLONG_DATA_DIR 的添加逻辑
61- # 如果 XDG_DATA_DIRS 为空,则先设置为 /usr/local/share:/usr/share,
62- # 然后再将 LINGLONG_DATA_DIR 添加到末尾。
63- : " ${XDG_DATA_DIRS:=/ usr/ local/ share:/ usr/ share} "
64-
65- # 然后,将 LINGLONG_DATA_DIR 添加到 XDG_DATA_DIRS 的末尾(如果不存在)
66- _add_path_to_xdg_data_dirs " $LINGLONG_DATA_DIR " " end"
67-
6857# --- 清理辅助函数 ---
6958unset -f _add_path_to_xdg_data_dirs
0 commit comments