[修复]修复安装脚本中普通用户安装异常的问题,将zsh和vim都改为为全局配置
Signed-off-by: 寻觅 <xunmiemail@vip.qq.com>
This commit is contained in:
		
							
								
								
									
										21
									
								
								安装.zsh
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								安装.zsh
									
									
									
									
									
								
							@ -29,6 +29,8 @@ readonly 系统一发行版一名称=$(echo "${NAME}")
 | 
			
		||||
# 龙架构区分新旧世界的标志位
 | 
			
		||||
世界一类型="旧世界"
 | 
			
		||||
 | 
			
		||||
用户名=$USER
 | 
			
		||||
 | 
			
		||||
if command -v sudo >/dev/null 2>&1; then
 | 
			
		||||
    特权="sudo"
 | 
			
		||||
else
 | 
			
		||||
@ -231,15 +233,14 @@ EOF
 | 
			
		||||
	标签包名=('universal-ctags' 'ctags')
 | 
			
		||||
	批量安装 标签包名 && 输出 0 "VIM必要依赖标签安装完毕"
 | 
			
		||||
	
 | 
			
		||||
	vim一配置路径=$HOME/.vim/pack/言灵
 | 
			
		||||
	vim一配置路径=/usr/share/vim/vimfiles/pack/言灵
 | 
			
		||||
	色彩一灰色
 | 
			
		||||
	if [ -f $HOME/.vimrc ]; then
 | 
			
		||||
		mv $HOME/.vimrc $HOME/.vimrc.old
 | 
			
		||||
	if [ -f /etc/vim/vimrc ]; then
 | 
			
		||||
		${特权} mv /etc/vim/vimrc /etc/vim/vimrc.old
 | 
			
		||||
	fi
 | 
			
		||||
	cp -v ${目录一根}/配置/vimrc $HOME/.vimrc
 | 
			
		||||
	rm -rf ${vim一配置路径}
 | 
			
		||||
	mkdir -vp ${vim一配置路径}/{opt,start}
 | 
			
		||||
	vim说明=${目录一根}/配置/vim配置说明.vim
 | 
			
		||||
	${特权} cp -v ${目录一根}/配置/vimrc /etc/vim/vimrc
 | 
			
		||||
	${特权} rm -rf ${vim一配置路径}
 | 
			
		||||
	${特权} mkdir -vp ${vim一配置路径}/{opt,start}
 | 
			
		||||
	获取一git scrooloose/nerdtree ${vim一配置路径}/start/树状目录
 | 
			
		||||
	获取一git jiangmiao/auto-pairs ${vim一配置路径}/start/括号补齐
 | 
			
		||||
	获取一git preservim/nerdcommenter ${vim一配置路径}/start/注释工具
 | 
			
		||||
@ -249,10 +250,8 @@ EOF
 | 
			
		||||
	获取一git ludovicchabant/vim-gutentags ${vim一配置路径}/start/Tag生成器
 | 
			
		||||
	获取一git preservim/tagbar ${vim一配置路径}/start/标签栏
 | 
			
		||||
	获取一git Yggdroot/LeaderF ${vim一配置路径}/start/模糊搜索器
 | 
			
		||||
	# if 是否 "是否启用基于c的模糊搜索(默认使用python, c的性能会好很多)"; then
 | 
			
		||||
		# vim -c ":LeaderfInstallCExtension" ${vim说明}
 | 
			
		||||
	# fi
 | 
			
		||||
	色彩一
 | 
			
		||||
	色彩一清除
 | 
			
		||||
 | 
			
		||||
	输出 0 "Zsh优化完成"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,10 @@
 | 
			
		||||
# 更新环境
 | 
			
		||||
pacman -Syu
 | 
			
		||||
pkgfile --update
 | 
			
		||||
 | 
			
		||||
# 清理pacman的下载缓存
 | 
			
		||||
## 清理时保留最近一个版本的包
 | 
			
		||||
paccache -rk1
 | 
			
		||||
## 清理所有以及卸载的包
 | 
			
		||||
paccache -ruk0
 | 
			
		||||
 | 
			
		||||
@ -1,2 +0,0 @@
 | 
			
		||||
pacman -Syu
 | 
			
		||||
pkgfile --update
 | 
			
		||||
@ -1,196 +0,0 @@
 | 
			
		||||
#!/usr/bin/bash
 | 
			
		||||
 | 
			
		||||
###############################################################################
 | 
			
		||||
# 变量                                                                        #
 | 
			
		||||
###############################################################################
 | 
			
		||||
 | 
			
		||||
# 将终端的输出重置为默认设置,并且不会换行(用于重置终端的字体颜色、背景色和文本样式等设置)
 | 
			
		||||
echo -e "\e[0m\c"
 | 
			
		||||
 | 
			
		||||
# shellcheck disable=SC2016
 | 
			
		||||
 | 
			
		||||
# 脚本在执行过程中遇到任何非零返回码的命令时立即退出
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
# 下载域
 | 
			
		||||
readonly DOWNLOAD_DOMAIN=https://gitea.whlug.cn/
 | 
			
		||||
# 下载保存路径
 | 
			
		||||
TMP_ROOT=/tmp/xunmi
 | 
			
		||||
 | 
			
		||||
# 读取系统架构和内核信息
 | 
			
		||||
readonly UNAME_M="$(uname -m)"
 | 
			
		||||
WorldType="新世界"
 | 
			
		||||
 | 
			
		||||
# 加载系统信息
 | 
			
		||||
source /etc/os-release
 | 
			
		||||
readonly Release=$(echo "${ID}")
 | 
			
		||||
readonly ReleaseName=$(echo "${NAME}")
 | 
			
		||||
 | 
			
		||||
# 获取项目路径
 | 
			
		||||
ItemDir=$1
 | 
			
		||||
 | 
			
		||||
###############################################################################
 | 
			
		||||
# 终端配色                                                                    #
 | 
			
		||||
###############################################################################
 | 
			
		||||
 | 
			
		||||
# 颜色配置
 | 
			
		||||
readonly COLOUR_RESET='\e[0m'
 | 
			
		||||
readonly aCOLOUR=(
 | 
			
		||||
    '\e[38;5;154m' 	# 0: 亮绿
 | 
			
		||||
    '\e[1m'        	# 1: 白
 | 
			
		||||
    '\e[90m'       	# 2: 灰
 | 
			
		||||
	'\e[91m'       	# 3: 红
 | 
			
		||||
	'\e[32m'		# 4: 绿
 | 
			
		||||
	'\e[33m'       	# 5: 黄
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
Show() {
 | 
			
		||||
    if (($1 == 0)); then
 | 
			
		||||
        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[0]} 成功 $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
 | 
			
		||||
    elif (($1 == 1)); then
 | 
			
		||||
        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[3]} 失败 $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
 | 
			
		||||
        exit 1
 | 
			
		||||
    elif (($1 == 2)); then
 | 
			
		||||
        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[4]} 信息 $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
 | 
			
		||||
    elif (($1 == 3)); then
 | 
			
		||||
        echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[5]} 通知 $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# 灰色信息(处理一些无关紧要的信息, 调用后在没有清除颜色之前会一直使用灰色输出)
 | 
			
		||||
GreyStart() {
 | 
			
		||||
    echo -e "${aCOLOUR[2]}\c"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# 清除颜色(一般和灰色信息连用)
 | 
			
		||||
ColorReset() {
 | 
			
		||||
    echo -e "$COLOUR_RESET\c"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
###############################################################################
 | 
			
		||||
# 函数/方法                                                                   #
 | 
			
		||||
###############################################################################
 | 
			
		||||
 | 
			
		||||
# 检查文件是否存在
 | 
			
		||||
exist_file() {
 | 
			
		||||
    if [ -e "$1" ]; then
 | 
			
		||||
		return 0
 | 
			
		||||
    else
 | 
			
		||||
        return 1
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# 识别架构
 | 
			
		||||
Check_Arch() {
 | 
			
		||||
    case $UNAME_M in
 | 
			
		||||
	*loongarch64*)
 | 
			
		||||
        TARGET_ARCH="loong64"
 | 
			
		||||
        ;;
 | 
			
		||||
    *)
 | 
			
		||||
        Show 1 "此模块仅支持 loong64 架构处理器暂不支持 $UNAME_M 架构"
 | 
			
		||||
        exit 1
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
    Show 2 "检测到 $TARGET_ARCH 架构"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# 检查发行版和世界信息
 | 
			
		||||
Check_Distribution() {
 | 
			
		||||
    sType=2
 | 
			
		||||
    notice=""
 | 
			
		||||
    case $Release in
 | 
			
		||||
    *arch*) ;;
 | 
			
		||||
    *Loongnix*);;
 | 
			
		||||
	*openwrt*)
 | 
			
		||||
        Show 1 "暂不支持openwrt"
 | 
			
		||||
        exit 1
 | 
			
		||||
		;;
 | 
			
		||||
    *)
 | 
			
		||||
        sType=3
 | 
			
		||||
        notice="我们尚未在此发行版上进行测试,默认使用新世界文件替换"
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
	WorldNum=$(hexdump -s 48 -C /usr/bin/sh | head -n 1 | awk '{print $2}')
 | 
			
		||||
	if [[ ${WorldNum} == "03" ]]; then
 | 
			
		||||
		WorldType="旧世界"
 | 
			
		||||
	fi
 | 
			
		||||
	Show ${sType} "检测到 ${ReleaseName} 发行版系统, 根据内核版本推断属于 -> ${WorldType} <- 系统 "
 | 
			
		||||
 | 
			
		||||
    if [[ ${sType} == 1 ]]; then
 | 
			
		||||
        select yn in "Yes" "No"; do
 | 
			
		||||
            case $yn in
 | 
			
		||||
            [yY][eE][sS] | [yY])
 | 
			
		||||
                Show 0 "检查已忽略"
 | 
			
		||||
                break
 | 
			
		||||
                ;;
 | 
			
		||||
            [nN][oO] | [nN])
 | 
			
		||||
                Show 1 "已退出安装"
 | 
			
		||||
                exit 1
 | 
			
		||||
                ;;
 | 
			
		||||
            esac
 | 
			
		||||
        done < /dev/tty # < /dev/tty 用于从终端读取输入信息
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# 下载替换依赖
 | 
			
		||||
DownloadAndInstall() {
 | 
			
		||||
    	PACKAGES=(
 | 
			
		||||
			"${DOWNLOAD_DOMAIN}public/JetBrains_jna/releases/download/1.0/libjnidispatch_${WorldType}.so"
 | 
			
		||||
			"${DOWNLOAD_DOMAIN}public/JetBrains_pty4j/releases/download/1.0/libpty_${WorldType}.so"
 | 
			
		||||
	
 | 
			
		||||
			"${DOWNLOAD_DOMAIN}public/JetBrains_fsnotifier/releases/download/1.0/fsnotifier_${WorldType}"
 | 
			
		||||
    	)
 | 
			
		||||
		
 | 
			
		||||
		# 检测项目路径是否存在
 | 
			
		||||
		exist_file $ItemDir/lib/jna/amd64 || Show 1 "未找到关键路径 '$ItemDir/lib/jna/amd64' 请使用最新版JetBrains"
 | 
			
		||||
 | 
			
		||||
        rm -rf ${TMP_ROOT}
 | 
			
		||||
        mkdir -p ${TMP_ROOT} || Show 1 "无法创建临时目录"
 | 
			
		||||
        TmpDir=$(mktemp -d -p ${TMP_ROOT} || Show 1 "无法创建临时目录")
 | 
			
		||||
		pushd "${TmpDir}"
 | 
			
		||||
 | 
			
		||||
        for PACKAGE in "${PACKAGES[@]}"; do
 | 
			
		||||
            Show 2 "下载 ${PACKAGE}..."
 | 
			
		||||
            GreyStart
 | 
			
		||||
            wget -t 3 -q --show-progress -c  "${PACKAGE}" || Show 1 "无法下载程序包"
 | 
			
		||||
            ColorReset
 | 
			
		||||
			Show 0 "下载完成"
 | 
			
		||||
        done
 | 
			
		||||
		now=$(date +"%Y%m%d-%H%M%S")
 | 
			
		||||
		exist_file $ItemDir/lib/jna/amd64 || Show 1 "未找到指定路径 $ItemDir"
 | 
			
		||||
		
 | 
			
		||||
		Show 2 "开始文件替换"
 | 
			
		||||
		GreyStart
 | 
			
		||||
		mv -nv $ItemDir/lib/jna/amd64/libjnidispatch.so $ItemDir/lib/jna/amd64/libjnidispatch_x86_$now.so
 | 
			
		||||
		cp -v $TmpDir/libjnidispatch_${WorldType}.so $ItemDir/lib/jna/amd64/libjnidispatch.so
 | 
			
		||||
		mkdir -vp $ItemDir/lib/pty4j/linux/loongarch64
 | 
			
		||||
		cp -v $TmpDir/libpty_${WorldType}.so $ItemDir/lib/pty4j/linux/loongarch64/libpty.so
 | 
			
		||||
		cp -v $TmpDir/fsnotifier_${WorldType} ~/.config/JetBrains/fsnotifier
 | 
			
		||||
		chmod -v 755 ~/.config/JetBrains/fsnotifier
 | 
			
		||||
		echo "idea.filewatcher.executable.path=$(readlink -f ~/.config/JetBrains/fsnotifier)" >> $ItemDir/bin/idea.properties
 | 
			
		||||
		ColorReset
 | 
			
		||||
		Show 0 "文件替换完成"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
###############################################################################
 | 
			
		||||
# 入口(main)                                                                  #
 | 
			
		||||
###############################################################################
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    cat <<-EOF
 | 
			
		||||
		使用方法: "$0 <PATH>"
 | 
			
		||||
			PATH: JetBrains软件解压路径
 | 
			
		||||
	EOF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if [ $# -eq 0 ]; then
 | 
			
		||||
  	usage 
 | 
			
		||||
	Show 1 "该脚本需要至少一个参数!"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# 检查架构
 | 
			
		||||
Check_Arch
 | 
			
		||||
# 检查发行版
 | 
			
		||||
Check_Distribution
 | 
			
		||||
# 下载替换依赖
 | 
			
		||||
DownloadAndInstall
 | 
			
		||||
@ -1,7 +0,0 @@
 | 
			
		||||
受限于vim特性, 没法做到执行完命令后自动退出, 如果左侧命令执行完毕, 请手动退出(:qa或:x)
 | 
			
		||||
 | 
			
		||||
完全不会使用vim请按如下操作:
 | 
			
		||||
等左侧执行完毕(所有下载和安装结束, 左侧内容超过五秒没发生任何变化)
 | 
			
		||||
1. 双击两下esc
 | 
			
		||||
2. 输入`:qa`( 按一下冒号,然后按字母q和a ), 这时候整个vim会退出
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user