linux环境变量的系统设置

下面列举相关文件
/etc/sysconfig/i18n
  1. $ cat /etc/sysconfig/i18n
  2. LANG="en_US.UTF-8"
  3. SYSFONT="latarcyrheb-sun16"
复制代码
我的是英文环境,所以整体语系是en_US.UTF-8,可以在修改相关的环境变量进行设定。
有人会纳闷?为什么会是i18n呢?internationalization,不过这个单词太长啦。所以把中间18个单词用18来代替了。

/etc/profile
这个文件比较有统一性。几乎所有版本的*NIX都会有。同时对所有的用户都有效。里面设置了一些比较重要的环境变量。PATH,HOSTNAME,UID 之类的。PAT H定位包含可执行文件,库文件及一般文本文件的目录位置,便于用户快速访问。有了前面的十二篇的基础,相信/etc/profile里面的简单脚本难不倒你。同时/etc/profile.d目录和文件/etc/inputrc也是由/etc/profile规划出来的。

/etc/bashrc
这个文件里面有一个比较重要的就是PS1环境变量。决定命令提示符的显示方式。

/etc/profile.d/*.sh
这是一个目录。针对bash以及C-shell规范了一些数据。可以自行设计一些具有*.sh的文件名来书写系统的设置值。

环境变量的个人设置:
~/.bash_profile ~/.bash_login ~/.profile
这三个文件只需要一个即可。一般默认是~/.bahs_profile。之所有有那么多的文件,是因为其他shell用户转过来的习惯。
bash启动时(其他的shell不清楚),依次读取的顺序是~/.bash_profile,~/.bash_login,~/.profile

~/.bashrc
这个是最个性化的设置文件。shell登录时候,最后读取的。每次执行shell脚本的时候都会读取这个文件,所以是最全面,最新的。而刚刚那个文件~/.bash_profile只是在登录的时候才读取一次的。在我的文件中重新设置了一个更加好看的命令提示符。PS1
  1. export PS1='\[\e[01;32m\][\u@\[\e[01;33m\]\h \[\e[01;34m\]\W] `[[ -d .git ]] && echo -n -e "\[\e[01;33m\](branch:$(git branch | sed -e "/^ /d" -e "s/* \(.*\)/\1/"))\[\e[01;34m\]"`\$ \[\e[00m\]'
复制代码
~/.bash_history
每次登录bash后,bash会先读取这个文件,将所有的历史命令读入内存。和HISTSIZE环境变量的设置值有关系。

~/.bash_logout
注销bash后,系统会给你干的事情。

对于刚才的几个文件我们通常在改变之后用source命令或者.重新读取一遍。

再谈谈登录shell和非登录shell
登录shell指的是当用户登录linux系统时,所取得的那个shell,当登录以后,再去执行其他的shell,其他的shell就是非登录shell了。
最常见的一种情况就是在X Window下,启动终端,那些shell都是非登录shell
还有一种情况是以一个用户登录有,使用命令bash切换到一个新的环境,这个也是非登录shell了。
把握好登录这两个字就可以了。
还有它们读取文件的区别。
登录shell会读取~/.bash_profile和~/.bashrc两个文件
非登录shell仅仅是读取~/.bashrc文件

stty用法
s t t y用于设置终端特性。要查询现在的s t t y选项,使用stty -a。
  1. $ stty -a
  2. speed 38400 baud; rows 24; columns 80; line = 0;
  3. intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
  4. swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
  5. lnext = ^V; flush = ^O; min = 1; time = 0;
  6. -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
  7. -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
  8. -iuclc ixany imaxbel iutf8
  9. opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
  10. isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
  11. echoctl echoke
复制代码
上面中^C表示Ctrl+C的意思。其他的依次类推。下面列举几个参数代表的含义。更多的请参考man stty
eof:End Of File 文件结束的意思
erase: 向后删除字符
kill: 删除在当前命令行上的所有文字
quit: 给当前正在执行的进程发送一个quit信号
stop: 停止当前屏幕的输出
这些设置值,和我们日常用的Ctrl+D,ctrl+U等操作相关。一般情况下没有必要改动。
假如想要用ctrl+H进行字符从删除,可以这么设置
# stty erase ^H

除了stty,bash还有自己的终端设置set,可以用来设置整个命令的输入输出的环境。
  1. # echo $-
  2. # 显示set的所有设置
  3. # set -x
  4. # echo $HOME
  5. # 要输出的命令都会屏幕上显示,前面会多出一个+符号来
复制代码
关于set的更多设置,更多地是写入了/etc/inputrc文件当中
最后不建议修改tty的环境设置,因为bash的环境已经设置很好了,不需要附加一些修改,否则产生不必要的麻烦。这里只是给大家展示以下终端是如何进行设置的。
原文地址:https://www.cnblogs.com/hnrainll/p/2013685.html