最近在复现基于milvus的问答时,遇到了在命令行输入中文导致编码错误的问题,需要修改locale设置,同时记录一下常见配置文件的修改方法。
1. profile文件
1.1 profile文件的作用
profile文件( /etc/profile ) ,是设置系统级别的环境变量和启动程序的,其中的配置会对所有用户生效。当用户登录后,该文件会被执行,除此之外,会从( /etc/profile.d) 目录下的配置文件查找sh配置。
1.2 profile文件中添加环境变量
- 由于profile文件会对所有的用户生效,因此不建议在profile文件中添加环境变量。
- 当需要添加环境变量时,按照以下方式添加:
添加一个HOST的值为 ming.com的环境变量
export HOST=ming.com
添加时,可以为行尾使用 ; ,也可以不使用。一个变量名可以对应多个变量值,多个变量值用 : 分隔。
- 添加环境变量后,需要重新登陆生效,也可以使用source令配置立即生效:
source /etc/profile
- 查看是否生效可以使用 echo 测试:
echo $HOST
2. bashrc文件
2.1 bashrc文件的作用
bashrc文件用于配置函数或者别名,其相当于shell的配置文件,bashrc是我用到的最多的配置文件,例如装conda的时候需要激活该文件。
- bashrc文件有两种级别:系统级别的位于
/etc/bashrc
(宿主机),/etc/bash.bashrc
(docker容器),用户级别的位于~/.bashrc
,分别对所有用户和当前用户生效。 - ~ 指的是当前用户的主目录,假如现在用户是sxe, 则相当于 /home/sxe/.bashrc
2.2 bashrc个性化设置
- 用户可以在
~/.bashrc
中进行个性化设置,例如路径、命令别名等。
export name='sxe'
alias ls=sl
2.3 bashrc设置locale
- 之前在命令行输入中文会报错,需要设置一下locale,具体方式如下:
export LC_ALL="C.UTF-8"
- 在宿主机或者容器的bashrc文件添加以上命令,
C.UTF-8
表示所有编码方式(可以尝试一下zh_CN.UTF-8), LC_ALL 会覆盖其他的设置,最后source 一下文件即可。
3. bash_profile文件
bash_profile只对单一用户有效,文件存储位于
~/.bash_profile
(宿主机),该文件是一个用户级的设置,可以理解为某一个用户的profile目录下。这个文件同样也可以用于配置环境变量和启动程序,但只针对单个用户有效。
和profile文件类似,bash_profile也会在用户登录时生效,也可以用于设置环境变量。但bash_profile只会对当前用户生效。
-
一般会在bash_profile文件中显示地调用bashrc,用户登录Linux 启动 bash 时会首先读取bash_profile文件,这样bashrc文件也就可以执行了,其中的个性化设置也会相应生效。
例如开机自动运行某个脚本,可以在bashrc文件中添加以下命令:
python /home/sxe/test.py
4.总结
bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-loginshell,而profile、bash_profile用于交互式login shell。