首页 > 其他分享 >FreeBSD系统设置启动环境变量文件涉及.cshrc、.login_conf等

FreeBSD系统设置启动环境变量文件涉及.cshrc、.login_conf等

时间:2024-07-01 22:59:02浏览次数:3  
标签:zh CN cshrc FreeBSD -- skywalk session conf UTF

问题提出:图形界面英文怎么配成中文?

FreeBSD启动后发现有时候进入xfce是中文系统,有时候是英文系统。其实是有两套图形登录系统,因此尝试在那套英文系统里设置环境变量,目标是1 显示中文 2 能输入中文。在解决问题中,尝试设置环境变量。

问题解决:设置启动环境变量

首先看两套图形登录界面,怀疑一个是Wayland等图形界面管理系统,因为登录前能选择GNOME、GNOME on Wayland、 GNOME on Xorg、 Plasma(Wayland) Plasma(X11)、User session、Xfce Session等。

查看/usr/local/etc/X11/xinit/ 相关文件

在xinitrc文件中看到twm

查看/usr/local/etc/X11/xinit/xinitrc文件,里面有这段

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login

因此应该是启动了twm窗口管理系统。 后来弄明白了,twm并不是管理GNOME、Xfce等的窗口管理器,而是一个小型的图形界面,可以理解为简化版的Xfce,在直接发startx命令的时候,默认就是进入twm窗口,也就是有两个xterm+一个xclock时钟的那个界面。

而一般安装好其它xwindows管理器后,我们一般会用类似startxfce4 或者startkde来启动相应窗口管理器。

详细文件内容/usr/local/etc/X11/xinit/xinitrc

#!/bin/sh

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/local/etc/X11/xinit/.Xresources
sysmodmap=/usr/local/etc/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then







    xrdb -merge $sysresources

fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f "$userresources" ]; then







    xrdb -merge "$userresources"

fi

if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

# start some nice programs

if [ -d /usr/local/etc/X11/xinit/xinitrc.d ] ; then
	for f in /usr/local/etc/X11/xinit/xinitrc.d/?*.sh ; do
		[ -x "$f" ] && . "$f"
	done
	unset f
fi

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login


为什么文件内容里面有空行呢? 是谁编辑的吗? 反正对强迫症来说这个文本是不太规范。 

查看90-consolekit文件发现是ck-launch-session启动管理器

/usr/local/etc/X11/xinit/xinitrc.d/90-consolekit 文件

/usr/local/etc/X11/xinit/xinitrc.d # cat  90-consolekit
# -*- sh -*-
# Xsession.d script for ck-launch-session.
#
#
# This file is sourced by Xsession(5), not executed.

CK_LAUNCH_SESSION=/usr/local/bin/ck-launch-session

is_on_console() {
	session=$(dbus-send --system --dest=org.freedesktop.ConsoleKit \
		--type=method_call --print-reply --reply-timeout=2000 \
		/org/freedesktop/ConsoleKit/Manager \
		org.freedesktop.ConsoleKit.Manager.GetCurrentSession \
		| grep path | awk '{print $3}' | sed s/\"//g)
	x11_display=$(dbus-send --system --dest=org.freedesktop.ConsoleKit \
		--type=method_call --print-reply --reply-timeout=2000 \
		$session org.freedesktop.ConsoleKit.Session.GetX11Display \
		| grep string | awk '{print $2}' | sed s/\"//g)

	if [ -z "$x11_display" ] ; then
		return 0
	else
		return 1
	fi
}

也就是应该用了ck-launch-session ck启动管理器

ck-launch-session启动管理器

文心的回答介绍:

ck-launch-session 是一个在 Linux 系统中与 ConsoleKit 和 systemd-logind(或早期版本的 systemd 的 logind 组件)相关的工具,它用于启动一个新的会话,并处理与该会话相关的权限和认证。具体来说,ck-launch-session 可以帮助用户安全地启动图形界面会话,确保会话有正确的权限和访问控制。

以下是关于 ck-launch-session 的一些关键点:

  1. 用途
    • 启动图形界面会话,如 GNOME、KDE、XFCE 等。
    • 确保会话有正确的用户权限和访问控制。
  2. 使用方法
    • 通常,ck-launch-session 会在用户的 ~/.xinitrc 文件中被调用,该文件是当从命令行启动图形界面时(如使用 startx 命令)所执行的脚本。
    • 例如,在 XFCE 的配置中,可能会在 ~/.xinitrc 文件的末尾看到类似于 exec ck-launch-session dbus-launch --exit-with-session startxfce4 的行。
  3. 与其他组件的交互
    • ConsoleKit:一个用于管理控制台会话的库和守护进程。它已被 systemd-logind 替代,但在一些较旧的系统中可能仍然使用 ConsoleKit。
    • systemd-logind:一个 systemd 的组件,用于管理用户登录会话。它提供了对用户会话的细粒度控制,包括会话的创建、认证和注销。
  4. 注意事项
    • 随着 systemd 的普及,许多系统现在使用 systemd-logind 而不是 ConsoleKit。因此,在较新的系统中,ck-launch-session 可能已被 systemd-run --user 或其他相关工具替代。
    • 在配置图形界面会话时,确保了解您所使用的系统和桌面环境的具体要求,以便正确设置 ~/.xinitrc 文件和其他相关配置。

总之,ck-launch-session 是一个用于安全启动图形界面会话的工具,它与其他系统组件(如 ConsoleKit 或 systemd-logind)协同工作,以确保会话的正确性和安全性。

手动修改启动时系统变量

这样问题就定位为:使用ck-launch-session启动管理器启动的xfce4没有设定为中文,这样就修改系统变量就行了。

另一个窗口是中文的,而且用户登录后控制台也是中文的(控制台能看到中文的乱码),证明csh这边设置应该没问题,查看用户下的.cshrc文件,发现:

setenv LANG zh_CN.UTF-8
setenv LANGUAGE zh_CN.UTF-8
setenv LC_CTYPE zh_CN.UTF-8
setenv LC_ALL zh_CN.UTF-8
setenv MM_CHARSET zh_CN.UTF-8

把~/.xinitrc文件加入中文支持:

setenv LANG zh_CN.UTF-8
setenv LANGUAGE zh_CN.UTF-8
setenv LC_CTYPE zh_CN.UTF-8
setenv LC_ALL zh_CN.UTF-8
setenv MM_CHARSET zh_CN.UTF-8

好像没效果。

查看用户目录下的隐含文件:

ls -la

drwxr-xr-x   8 skywalk  skywalk          8  5月 21 13:21 .local
-rw-r--r--   1 skywalk  skywalk        323  8月 24  2023 .login
-rw-r--r--   1 skywalk  skywalk         91  8月 24  2023 .login_conf
drwxr-xr-x   5 skywalk  skywalk          6  1月 11 19:53 .logseq
-rw-------   1 skywalk  skywalk        301  8月 24  2023 .mail_aliases
-rw-r--r--   1 skywalk  skywalk        267  8月 24  2023 .mailrc
drwx------   4 skywalk  skywalk          4 10月 31  2023 .mozilla
drwxr-xr-x   5 skywalk  skywalk          6  3月 22 12:24 .npm
-rw-------   1 skywalk  skywalk         57  1月 22 23:08 .npmrc
drwxr-xr-x   3 skywalk  skywalk          3 10月 31  2023 .openoffice.org
-rw-r--r--   1 skywalk  skywalk         34  2月 29 08:15 .padminrc
drwx------   3 skywalk  skywalk          3  8月 24  2023 .pki
-rw-r--r--   1 skywalk  skywalk        978  8月 24  2023 .profile
drwx------   5 skywalk  skywalk          9  3月 13 10:57 .purple
-rw-------   1 skywalk  skywalk      17822  6月 21 16:26 .python_history
-rw-r--r--   1 skywalk  skywalk       1015  8月 24  2023 .shrc

针对.login .login_conf .shrc等文件,一个一个进入查看、尝试写入中文支持文件,后来发现在.login_conf文件中设置最为合适。

最终使用方法,修改.login_conf文件,添加中文支持

最简单的方法是.login_conf文件中加入如下三句:

me:\

    :lang=zh_CN.UTF-8:\
    :charset=zh_CN.UTF-8:\

但是没有中文输入法,无法输入中文。

修改.login_conf

#me:\
#    :charset=iso-8859-1:\
#    :lang=de_DE.ISO8859-1:

学习德文的修改方法,修改中文就是乱码。

me:\
    :charset=iso-8859-1:\
    :lang=zh_CN.ISO8859-1:

学习繁体中文的修改方法
me:\
	:lang=zh_TW.Big5:\
	:setenv=LC_ALL=zh_TW.Big5,LC_COLLATE=zh_TW.Big5,LC_CTYPE=zh_TW.Big5,LC_MESSAGES=zh_TW.Big5,LC_MONETARY=zh_TW.Big5,LC_NUMERIC=zh_TW.Big5,LC_TIME=zh_TW.Big5:\
	:charset=big5:\
	:xmodifiers="@im=gcin": #Set gcin as the XIM Input Server

参考繁体设置简体:

me:\

    :lang=zh_CN.UTF-8:\
    :charset=zh_CN.UTF-8:\

    :setenv=LANG zh_CN.UTF-8,LANGUAGE zh_CN.UTF-8, LC_CTYPE zh_CN.UTF-8, LC_ALL zh_CN.UTF-8,MM_CHARSET zh_CN.UTF-8,XMODIFIERS @im=fcitx:\

    :mm_charset=zh_CN.UTF-8:

    :lang=zh_CN.UTF-8:\
    :charset=zh_CN.UTF-8:\

    :xmodifiers="@im=gcin":

XMODIFIERS @im=fcitx

发现加入这句还是不行:

    :xmodifiers="@im=fcitx":

最终在.login_conf文件中加入中文支持如下:

me:\

    :lang=zh_CN.UTF-8:\
    :charset=zh_CN.UTF-8:\
    :setenv=LANG zh_CN.UTF-8,LANGUAGE zh_CN.UTF-8, LC_CTYPE zh_CN.UTF-8, LC_ALL zh_CN.UTF-8,MM_CHARSET zh_CN.UTF-8,XMODIFIERS @im=fcitx:\
    :mm_charset=zh_CN.UTF-8:

现在xfce4里面已经中文化,fcitx输入法登录之后右上角有,但是无法用快捷键切换,也没法输入中文。都已经忘记上次fcitx怎么配好的了,关键发现竟然没有留文档.....

尝试配置fcitx

第 5.1 节 Fcitx 输入法框架 | FreeBSD 从入门到跑路

后来发现,是有两套窗口管理系统,一套在alt f9,一套在alt f10 ,f9那套为原来英文的,f10那套为中文的,且输入法也是调好的。所以最终这套设好中文显示就行,输入法倒不那么着急去配了。

总结

本次实践解决了两个问题

发现系统有两套xwindows登录系统

一套Alt F9,一套在Alt F10 ,F9那套为原来英文的,F10那套为中文的,且输入法也是调好的。当然在图形界面下切换需要Ctrl-Alt+F9 或者Ctrl-Alt+F10。

这样终于解决了前期的一个疑惑,就是系统登录之后,有时候是英文系统,有时候是中文系统。其实每次重启默认登上去的都是英文系统,每回都是手工切换的。只是因为系统很长时间才重启一次,所以没有深入研究这个事。

环境变量设置问题

系统环境变量,X窗口的在/usr/local/etc/X11/xinit目录

全局登录在/etc/login.conf

用户登录配置在~/.login_conf文件,另外cshell在.cshrc 。理论上sh或bash在.shrc,但是试验下来没有调用该文件配置,需要手工执行source .shrc才行。

本次就是在~/.login_conf文件中加入了中文支持。

标签:zh,CN,cshrc,FreeBSD,--,skywalk,session,conf,UTF
From: https://blog.csdn.net/skywalk8163/article/details/140087356

相关文章

  • 45、k8s-数据存储-配置存储-secret-(用于存储配置信息的-比configMap安全)-密文存储
    作用:用于存储敏感信息、例如密码、密钥、证书等实验:创建secret、再将secret挂载到容器里去、使用容器查看secret存储的信息1、先使用base64对数据进行编码·echo-n'admin'|base64---------------------------YWRtaW4=---------------------------......
  • 44、k8s-数据存储-配置存储-configMap-(用于存储配置信息的)
    概念:ConfigMap是一种比较特殊的存储卷、它主要的作用是用来存储配置信息的其模板如下:1、创建配置卷的yaml文件:vimconfigmap.yaml-------------------------------------------------------apiVersion:v1kind:ConfigMapmetadata:name:configmapnamespace:devdat......
  • gdb编译报错 #error "Please include config.h
    gdb编译报错,错误提示“/gnulib/import/unistd.h:135:3:error:#error"Pleaseincludeconfig.h”解决办法如下:修改源码路径下的gdb/nat/amd64-linux-siginfo.c文件,将Include "gdbsupport/common-defs.h"移动到#include<signal.h>之前,再保存重新编译;修改前: 修改后: ......
  • 猫头虎分享已解决Bug || 服务器配置错误(Server Configuration Error): ServerMisconfig
    ......
  • git config --xx --xxx 参数 【汇总】
    前言全局说明gitconfig--xx--xxx参数【汇总】一、说明1.1Windows默认证书路径C:\ProgramFiles\Git\etc\gitconfig1.2Linux默认证书路径/home/${USER}/.gitconfig注意:.gitconfig是隐藏文件,需要用ls-a命令才能看到二、查看全局配置2.1查看全部配......
  • XILINX set_property BITSTREAM.CONFIG.CONFIGRATE
    起因在一个新的XILINXXCKU040FPGA设计中,SPI支持X8模式,此时BIT生成约束如下:#thehardwaresupportspix8,willbootfasterfromflash#set_propertyBITSTREAM.CONFIG.SPI_BUSWIDTH8[current_design]#set_propertyCONFIG_MODESPIx8[current_design]set_property......
  • stm32影子寄存器、预装载寄存器,TIM_OC1PreloadConfig和TIM_ARRPreloadConfig的作用
    一直没搞清楚stm32定时器的TIM_OC1PreloadConfig、TIM_ARRPreloadConfig函数的作用,影子寄存器、预装载寄存器、重载寄存器的概念。今天来研究一下:图中有阴影的小方框,代表该功能对应的寄存器有影子寄存器,也就是:PSC预分频器、自动重装载寄存器、REP寄存器和4个通道的捕获/比较寄存......
  • docker拉取镜像失败error pulling image configuration: download failed after attem
    最近很多朋友遇到docker拉取镜像失败的问题因为一些网络问题,无法访问docker官方镜像仓库,我们可以通过设置阿里云镜像加速器的方式解决该问题。解决方法:1.访问阿里云官网,并登录https://www.aliyun.com/2.搜索容器镜像服务3.点击立即开通4.根据提示免费开通个人版,开通......
  • pkg-config
    一、pkg-configpkg-config是一个命令行工具,主要用于帮助开发者在编译依赖于特定库的软件时,自动获取和设置正确的编译器选项和链接器选项。它的主要作用在于简化编译过程,确保程序能够正确地找到所需的头文件和库文件,尤其是在库文件可能安装在非标准位置的情况下。pkg-config版本......
  • Spring Boot 源码分析五:Spring Boot AutoConfiguration 自动配置机制
    1.引言在前几篇文章中,我们探讨了SpringBoot的启动流程及其扩展机制。在本篇文章中,我们将深入分析SpringBoot的自动配置(AutoConfiguration)机制,这是SpringBoot最具特色和强大的功能之一。2.自动配置概述SpringBoot的自动配置机制旨在根据项目中的类路径和配置属性,自......