Linux环境变量的初步理解
主要记录个人对Linux中环境变量的理解及相关参数的配置。
环境变量
Linux中安装软件后,直接输入软件名系统并不能调用该软件,此时一种方法是输入软件的全路径来调用该软件,另一种则是将软件的路径添加到系统的环境变量中,后续就可以直接在命令行输入软件名来调用。
Windows中也是存在环境变量的,但是其图形化界面极大的淡化了对环境变量概念理解的需求,所以初次接触Linux环境变量会不太理解。
linux中系统环境变量的配置文件
/etc/profile
登录时操作系统定制用户环境所使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
/etc /environment
登录时操作系统使用的第二个文件, 系统在读取你自己的 .profile 前,设置环境文件的环境变量。
~/.profile
登录时用到的第三个文件 是 .profile 文件,每个用户都可使用该文件输入专用于自己使用的 shell 信息,当用户登录时,该文件仅仅执行一次!默认一些环境变量,执行用户的 .bashrc 文件。
/etc/bashrc
为每个运行 bash shell 的用户执行此文件。bash shell 打开时读取该文件。
~/.bashrc
包含专用于当前用户的 bash shell 的 bash 信息,登录及每次打开新的shell时读取该文件。
linux中读取配置文件的顺序
1.图形模式登陆时:/etc/profile → ~/.bashrc
2.图形模式登陆后,打开终端时:/etc/bash.bashrc → ~/.bashrc
3.命令行登录时:/etc/bash.bashrc → ~/.bashrc_profile
4.其他用户su到该用户分两种情况:
① 带 -l/-login 参数(如:su -l root),读取顺序为:/etc/bash.bashrc → /etc/profile → ~/.bashrc_profile
② 不带 -l/-login 参数(如:su root),读取顺序为:/etc/bash.bashrc → ~/.bashrc
Linux 中设置环境变量的方法
1.用户主目录下的.profile或.bashrc文件(非root用户推荐)
# 用户登录后输入以下指令
# 将安装好的cellranger添加到 .bashrc中
echo 'export PATH="/home/devdata/Software/biosoft/cellranger-3.0.2:$PATH"' >> ~/.bashrc
source ~/.bashrc
2.系统目录下的profile文件(慎用)
# 系统的etc目录下的profile添加 zUMIs 的路径
echo 'export PATH="/home/devdata/Software/soft/zUMIs:$PATH"' >> /etc/profile
source /etc/profile
## root用户修改完成后,所有用户均能使用 ##
3.系统目录下的 environment 文件(慎用)
# 系统的 etc 目录下的 environment 添加 cellranger 的路径
# vim 打开 environment 文件后
vim /etc/environment
# 按照路径作出如下修改
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/devdata/Software/soft/cellranger-3.0.2"
source /etc/environment
## root用户修改完成后,所有用户均能使用 ##
注意不能使用 export PATH=
来添加环境变量,这样会导致系统不能找到原来的环境变量,会出现 -bash: XX: No such file or directory
错误提示,解决方法如下:
# 设置临时变量(重启或重新登录后失效)
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
vim /etc/environment
# 删除 /etc/environment 中 export PATH= 的部分
source /etc/environment
个性化设置
在个人的~/.bashrc
添加如下代码进行个性化设置:
## personal set
# set work path
cd [work path]
# set command
alias ee='exit'
# set color val
GREEN="\[\e[32;1m\]"
BLUE="\[\e[36;1m\]"
WHITE="\[\e[37;1m\]"
BLACK="\[\e[30;1m\]"
RED="\[\e[31;1m\]"
YELLOW="\[\e[33;1m\]"
PURPLE="\[\e[35;1m\]"
DARK_GREEN="\[\e[36;1m\]"
CLEAR="\[\e[0m\]"
_JOB_="\j"
_FILECOUNT_="Files: \$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g')"
_HISTORY_="\!"
_DATE_="\$(/bin/date)"
_CLOCK_="\t"
_SIZE_="Size: \$(/bin/ls -lah | /usr/bin/head -n 1 | /usr/bin/cut -d ' ' -f 2)"
_PATH_="\$(pwd)"
_GIT_BASH_="\$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/')"
# set PS1
export PS1="$RED\u$BLUE@$YELLOW\h $GREEN$_PATH_ $RED$_GIT_ $WHITE\d \A ${BLUE} forstart\n$CLEAR$"