70 lines
1.5 KiB
Bash
Executable File
70 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
BIN_DIR="${HOME}/.local/bin"
|
|
PATH_MARKER="# skiff: ~/.local/bin"
|
|
|
|
mkdir -p "$BIN_DIR"
|
|
ln -sf "$REPO/bin/skiff" "$BIN_DIR/skiff"
|
|
echo "已安装 skiff -> $BIN_DIR/skiff"
|
|
|
|
path_already_configured() {
|
|
local file="$1"
|
|
[[ -f "$file" ]] && grep -qF "$PATH_MARKER" "$file"
|
|
}
|
|
|
|
configure_bash() {
|
|
local rc="${HOME}/.bashrc"
|
|
if path_already_configured "$rc"; then
|
|
echo "bash: $rc 已配置 PATH,跳过"
|
|
return
|
|
fi
|
|
{
|
|
echo ""
|
|
echo "$PATH_MARKER"
|
|
echo 'export PATH="$HOME/.local/bin:$PATH"'
|
|
} >>"$rc"
|
|
echo "bash: 已写入 $rc"
|
|
}
|
|
|
|
configure_zsh() {
|
|
local rc="${HOME}/.zshrc"
|
|
if path_already_configured "$rc"; then
|
|
echo "zsh: $rc 已配置 PATH,跳过"
|
|
return
|
|
fi
|
|
{
|
|
echo ""
|
|
echo "$PATH_MARKER"
|
|
echo 'export PATH="$HOME/.local/bin:$PATH"'
|
|
} >>"$rc"
|
|
echo "zsh: 已写入 $rc"
|
|
}
|
|
|
|
configure_fish() {
|
|
local fish_dir="${HOME}/.config/fish"
|
|
local rc="${fish_dir}/config.fish"
|
|
mkdir -p "$fish_dir"
|
|
if path_already_configured "$rc"; then
|
|
echo "fish: $rc 已配置 PATH,跳过"
|
|
return
|
|
fi
|
|
{
|
|
echo ""
|
|
echo "$PATH_MARKER"
|
|
echo 'fish_add_path -gm --prepend ~/.local/bin'
|
|
} >>"$rc"
|
|
echo "fish: 已写入 $rc"
|
|
}
|
|
|
|
configure_bash
|
|
configure_zsh
|
|
configure_fish
|
|
|
|
echo ""
|
|
echo "请重新打开终端,或执行以下命令使 PATH 生效:"
|
|
echo " bash: source ~/.bashrc"
|
|
echo " zsh: source ~/.zshrc"
|
|
echo " fish: source ~/.config/fish/config.fish"
|