mirror of
https://github.com/wnlen/clash-for-linux.git
synced 2026-03-21 22:06:45 +08:00
Update clashctl
This commit is contained in:
43
clashctl
43
clashctl
@ -1,7 +1,48 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
resolve_project_dir() {
|
||||||
|
# 1) 显式指定优先
|
||||||
|
if [ -n "${CLASH_INSTALL_DIR:-}" ] && [ -d "${CLASH_INSTALL_DIR:-}" ]; then
|
||||||
|
printf '%s\n' "$CLASH_INSTALL_DIR"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2) 解析脚本真实路径(兼容软链/安装到 /usr/local/bin)
|
||||||
|
local src dir
|
||||||
|
src="${BASH_SOURCE[0]}"
|
||||||
|
|
||||||
|
while [ -L "$src" ]; do
|
||||||
|
dir="$(cd -P "$(dirname "$src")" && pwd)"
|
||||||
|
src="$(readlink "$src")"
|
||||||
|
[[ "$src" != /* ]] && src="$dir/$src"
|
||||||
|
done
|
||||||
|
|
||||||
|
dir="$(cd -P "$(dirname "$src")" && pwd)"
|
||||||
|
|
||||||
|
# 如果 clashctl 就在项目根目录
|
||||||
|
if [ -f "$dir/scripts/service_lib.sh" ]; then
|
||||||
|
printf '%s\n' "$dir"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3) 常见安装目录兜底
|
||||||
|
for candidate in \
|
||||||
|
"/opt/clash-for-linux" \
|
||||||
|
"$HOME/clash-for-linux" \
|
||||||
|
"/root/clash-for-linux"
|
||||||
|
do
|
||||||
|
if [ -f "$candidate/scripts/service_lib.sh" ]; then
|
||||||
|
printf '%s\n' "$candidate"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "[ERROR] Unable to locate project directory" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
PROJECT_DIR="$(resolve_project_dir)"
|
||||||
SERVICE_NAME="clash-for-linux.service"
|
SERVICE_NAME="clash-for-linux.service"
|
||||||
PROFILED_FILE="/etc/profile.d/clash-for-linux.sh"
|
PROFILED_FILE="/etc/profile.d/clash-for-linux.sh"
|
||||||
ENV_FILE="$PROJECT_DIR/.env"
|
ENV_FILE="$PROJECT_DIR/.env"
|
||||||
|
|||||||
Reference in New Issue
Block a user