理解环境变量的原理,以后在Linux上安装软件才会畅行无阻。
环境变量
用于存储有关shell会话和工作环境的系统变量
常见环境变量
HOME
:当前用户的主目录(大家的家目录)
PATH
:shell查找命令的目录列表,由冒号(:)分隔。(PATH有一个规律:路径很多,用冒号:分开)
SHELL
:bash shell的全路径名
LOGNAME
:当前用户的登录名
PS1
:shell命令行界面的主提示符(之前接触过,是用来修改命令行配色)
PS2
:shell命令行界面的次提示符
在Linux里,是用echo打印变量。
- **echo **
(1)打印字符串
(2)打印变量的值,变量调用要加 $
几个常见的环境变量的介绍
-
$HOME
记录了用户的家目录所在的路径
echo $HOME
#/home/ashu
PS1
命令行配色
$ echo $PS1
\[\033]2;\h:\u \w\007\033[33;1m\]\u \033[35;1m\t\033[0m \[\033[36;1m\]\w\[\033[0m\]\n\[\e[32;1m\]$ \[\e[0m\]
$ echo $PATH
/trainee2/vip28/miniconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
- 修改命令行配色
感兴趣的自行搜索
echo 'export PS1="\[\033]2;\h:\u \w\007\033[33;1m\]\u \033[35;1m\t\033[0m \[\033[36;1m\]\w\[\033[0m\]\n\[\e[32;1m\]$ \[\e[0m\]" ' >> ~/.bashrc
source ~/.bashrc
##>> ~/.bashrc,linux系统原来有.bashrc这个文件,把配色PS1追加>>到~/.bashrc,修改配色,把黑白命令行,改成有彩色的。
~/.bashrc:系统配置文件,包含专用于你的 bash shell 的 bash信息、设置,每次登录或打开新的 shell 时,该文件会 被自动读取和执行。如果正确修改了.bashrc,需要source,不想source的话,就是重新登入服务器,~/.bashrc在登录时会被执行
- PATH(最关键的知识点)
PATH保存的信息是命令,可执行文件
$PATH
:输入命令时Linux(系统)会去查找PATH里面记录的路径,如果命令存在某一个路径中,就可以成功调用。
打个比方,PATH 是一个工具箱,有很多层(对应很多个路径),每一层放着各式各样的工具(对应各种命令)。(PATH里有的命令才可以被使用,就如工具箱有的工具才能被使用,没有的话就不能使用,)
$ echo $PATH
##记录很多个路径:路径之间没有空格,用冒号(:)分开
/trainee2/vip28/miniconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
# 可以把 : 替换成换行符 \n
$ echo $PATH | tr ':' '\n'
/trainee2/vip28/miniconda3/condabin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
##每个路径下保存的是命令
##查看命令保存在哪里,用which
# 比如 ls 命令存在
$ ls
$ which ls
/bin/ls
ls /bin
有一位同学提出的问题:可以创建自己的./bashrc吗?
答案:不可以,在创建用户名时已经创建./bashrc,查看./bashrc里面保存什么
cat .bashrc
##里面有很多信息
##里面前面加#的内容,可能是一些注释信息
##没有注释的代码,在登入服务器是就被自动执行
##举例子:
##alias的意思是取别名
alias ll='ls -alF'
##让ll等于ls -alF
##分别运行ls -alF和ll,它们运行出的结果一样
##这是被设置好的,如果以后拿到一台服务器,不一定是这个设置
alias la='ls -A'
alias l='ls -CF'
安装conda时,修改了系统里的bashrc,source或是重新登录就会被激活
export PATH="/home/ashu/miniconda3/bin:$PATH"
##这个是原来的$PATH,添加了bin目录
echo $PATH
echo $PATH | tr ':' '\n'
conda在.bashrc里添加两句
/home/ashu/miniconda3/bin
/home/ashu/miniconda3/condabin
#/usr/local/bin
##现在能理解
#安装conda之后,需要source ./bashrc,重新运行里面的代码,才能生效。或是重新登录
conda在PATH和bashrc里,在哪个位置
conda --help
which conda
#/home/ashu/miniconda3/bin/conda
echo $PATH |tr ':' '\n'
##理解conda,bashrc,PATH三者的关系:安装conda,conda修改bashrc,conda所在目录是在我们PATH里面,所以可以调用成功。conda修改了PATH,添加路径/home/ashu/miniconda3/bin,然后又把添加的代码写在bashrc,激活bashrc或是重新登录服务器
- 如何管理 PATH
在小环境rna里安装fastqc,在base里fastqc --help报错
echo $PATH | tr ':' '\n'
fastqc --help
conda activate rna
fastqc --help
echo $PATH | tr ':' '\n'
##发现多加了一句/home/ashu/miniconda3/envs/rna/bin
##激活小环境后,修改bashrc,就是多加上面那一句代码。
##激活小环境的原理是,在PATH里添加一个路径
which fastqc
##/home/ashu/miniconda3/envs/rna/bin/fastqc
conda deactivate
##退出小环境rna,不需要加rna
which fastqc
小郭老师踩了很多坑探索出来的,有空再看看这个PATH的视频
如何管理$PATH
:理解环境变量 $PATH
是非常重要的,对后续的环境和软件管理都非常重要。
推荐方法:在自己家目录下创建一个 ~/bin/
文件夹并将其添加到环境变量,后续安装软件,就将软件的可执行文件拷贝或软链接(绝对路径)到这个 bin 文件夹:
##一定要退出小环境,才进行以下的操作
mkdir ~/bin
echo 'export "PATH=${HOME}/bin:$PATH" ' >> ~/.bashrc
##${HOME}加上{}是让系统能识别到,避免与其它变量混在一起后续出问题
##原来的echo 'export "PATH=~/bin:$PATH" ' >> ~/.bashrc
##有时候波浪线~会识别错误,所以用${HOME}替代~
source ~/.bashrc
cat ~/.bashrc
echo $PATH | tr ':' '\n'
##/home/ashu/bin,多了这一句
echo $PATH | tr ':' '\n'
说明
以上内容是听生信技能树小郭老师授课内容以及参考课件。