Linux下为什么ls直接就可以运行,而你的程序要写./dir1/dir2/bin/bwa才可以

习惯了Windows电脑下的所见即所得,找到程序或文件双击即可运行或打开;于是我们被惯得以为电脑会像人一样聪明,给他一个名字就可以运行程序或打开文件;于是在命令行下或程序里不断碰壁,为啥这个命令不运行了呢?

我们不能太高估电脑(或操作系统),不要以为只要输入一个程序名或文件名,电脑(或操作系统)就可以满硬盘的去找这个文件在哪;这一来效率太低了,二来重名了怎么办?比如有2个文件都叫“子房.txt”,一个存储汉初三杰之张良,一个存储被子植物生长种子的器官;可能打开前我们自己也不知道要开哪个吧。

想一下,我们在Windows下寻找文件时,是不是先打开,然后打开,打开目录,再打开这个文件。即便我们从来没有执行过这个计划,每天我们还是不厌其烦的一层层打开然后制定新的计划。只是,我们忽略了这个打开。

我们一般指文件的路径,也就是打开的过程。以Linux为例:

我们要查看一个在自己家目录下的文件 ,那登录后,直接可见:

也可以一步步先做目录切换,然后再查看

那如果你这时你想运行快速分析宏基因组数据怎么办?

命令去哪儿了?上面我们都看到了,就在目录下,为啥电脑(操作系统)这么笨却找不到?另外为什么运行就可以找到?难道有一些黑魔法在里面?

确实是有一些黑魔法的,不过我们一般称之为规则

操作系统为了便捷性和安全性,定义了一系列环境变量,存储常用信息, (注意全是大写)是其中一个。

: 是存放有(可执行)命令和程序的目录集合;在操作系统接到用户输入的命令时,会对PATH存储的目录进行查找,看下是否有与用户输入的命令同名的文件存在,而且是从前到后一个个查找,而且是查到就停,最后查不到就报错。(从这几个加粗的文字,可以看到操作系统很懒,当然懒是好的程序员的必备属性。)

我们先看下里面存了哪些目录?

在我们前面输入命令时,操作系统收到指令后,先去看下里面有哪些目录,然后从第一个开始寻找,很幸运,一下找到了文件,尝试运行,成功。所以在这个情况下,我们输入等同于输入。那这个会不会给我们一些启发呢?

我们只要提供的路径就可以运行了。

程序可以运行了,但是不是写起来太麻烦了?既然可以只写命令,系统就可以帮着我们去找,那么我们是否也可以把放到里面。这就是如何去设置环境变量了。

# 给原变量PATH后面加一个路径(绝对路径),冒号(:)分割

YSX@ehbio:~/train/single_cell$ PATH=$PATH:/home/YSX/train/metagenome/

# 导出变量,使其对系统(Shell)可见

YSX@ehbio:~/train/single_cell$ export PATH

# 上面两句可以合并为一句,如下:

YSX@ehbio:~/train/single_cell$ export PATH=$PATH:/home/YSX/train/metagenome/

# 再次运行,可以运行了

YSX@ehbio:~/train/single_cell$ pipeline_metagenome.sh

# 看下PATH存储的目录,多了我们的新增

YSX@ehbio:~/train/single_cell$ echo $PATH

/usr/bin:/usr/local/bin:/home/YSX/train/metagenome/

这样就新增一个目录到环境变量里面了,可以依次继续增加更多目录。

有时我们也会看的这样的写法:,这与有什么区别呢?

回顾下这几个关键字:从前到后查到就停。写出官话就是:PATH中越靠前的路径优先级越高。这有什么用处呢?

比如,一般的操作系统都会有系统的和,通常版本比较老,我们作为普通用户也没权限修改。

那怎么办?自己装一份,然后用自己的,这时就涉及到优先级问题了。

假如我在下安装了一个,那么我需要设置优先调用我自己的,设置环境变量时,我就得把放到前面,如。如果反过来写,就优先被调用了。

环境变量学会怎么设置了,关机,下班,睡觉。

第二天早上起来,打开电脑,再运行程序

结果发现昨天的设置都无效了,去生信宝典群里提问 “有谁对Linux比较精通?”。半晌,无人响应,敢说自己精通的不多。

后来,有好心人回复“你遇到什么问题,具体描述下?”

经过半个小时的沟通,理清了,关键点:环境变量设置后失效了,怎么长期有效?

如果早这么问,估计程序都运行完了。

这时需要用到另一个规则: 登录远程服务器时,系统会自动运行里面的命令,所以把前面写的这句话放到文件里面就好了。

文件输入后,不要忘记使设置生效(当然,关掉登录窗口,再次登录也可以)。

其它被忽略的事情

标签: 电脑 linux

最新资讯

文档百科

5个月大的猫咪吃多少 猫咪吃饱的时候会给你提示的!

5个月大的猫咪一天需要喂食300克左右的猫粮,每天需要喂食3餐,每餐控制在100克左右为最佳,但是主人需要注意每只猫咪的进食量都是存在不同的,因为猫咪的体重、品种、运动量以及猫粮都是不同的,所以喂食的标准并不是固定值,主人需要根据自家猫咪的实际情况进行判断和调整。

大禹治水在迁安?大禹治水到底是在什么地方

在作为黄帝古都的迁安,也流传着大禹曾在此处治水的故事和传说,在有心人的挖掘中,在这片土地上延展。大禹治水是古代的汉族神话传说故事。大禹率领民众,与自然灾害中的洪水斗争,最终获得了胜利。大禹治水13年,耗尽心血与体力,终于完成了治水的大业。在迁安,流传着一种说法,说迁安归口的口子是大禹所凿开。

宋朝为什么会发生四百多起农名起义?真相是什么

你真的了解宋朝吗?但是宋朝是个例外,据《续资治通鉴长编》记载,宋朝建立开始第三年就爆发了一场农民起义,而后起义事件频繁爆发,一直持续到南宋灭亡的320. 据考究,宋朝433起起义事件,其中有超过一半是使用的招安的政策。

音频创业的全球机会在何方?

“耳朵经济”“音频消费”是这几年创投圈探讨频繁的名词,由于疫情的爆发,客观上给内容产业和线上娱乐产业一个利好环境,在2020年,音频是否会迎来一个小风口?音频出海的创业机会在哪里?音频市场从引爆到现在成熟,它的成熟度表现在以下三个方面:。总的来说中国音频播客和有声书内容生态处于早期阶段,在下沉和出海存在着广大的机会。

帮助高加索犬洗澡的方法

对于给高加索犬这中大型的宠物狗洗澡,首先要给狗狗带上项圈,方便在洗澡的时候,主人能有效的控制住狗狗。然后在用棉花棒或者棉条垂直塞住高加索犬丁字形的耳道。在给狗狗洗完澡后,饲养者要及时的用毛巾将宠物狗身上的水分擦拭掉,然后使用吹风机将高加索犬全身湿漉的额毛发及时的吹干,以防止狗狗着凉生病。

过年回家催婚,压力大,怎么办?

催婚催生,可能是父母应对死亡焦虑的一种方式。无论是谁,在面对即将到来,或者终将到来的死亡这一事实时,会产生恐惧、纠结,不安等复杂的思想和情绪,这种情绪,就是死亡焦虑。对于上一辈的老年人而言,这其中,最重要的一项就是子女的婚姻。父母力所能及的情况下,鼓励他们帮助他人。

CopyRight © 2000~2023 一和一学习网 Inc.All Rights Reserved.
一和一学习网:让父母和孩子一起爱上学习