肥宅钓鱼网
当前位置: 首页 钓鱼百科

在Shell脚本中$?用于(解决shell脚本中34)

时间:2023-07-03 作者: 小编 阅读量: 1 栏目名: 钓鱼百科

背景最近在通过shell脚本在Linux系统安装Java或Python的过程中,遇到了shell脚本中的“source/etc/profile”无法生效的问题,虽然也可以在执行完脚本后再次执行“source/etc/profile”来使配置文件生效,但未免有些繁琐,而我又比较懒,想彻底弄清其原因及解决办法,从而一劳永逸。所以,当脚本执行完成,回到shell命令行,原子shell脚本中执行的source命令也就不生效。

背景


最近在通过shell脚本在Linux系统安装Java或Python的过程中,遇到了shell脚本中的“source /etc/profile”无法生效的问题,虽然也可以在执行完脚本后再次执行“source /etc/profile”来使配置文件生效,但未免有些繁琐,而我又比较懒,想彻底弄清其原因及解决办法,从而一劳永逸。以下为本次解决问题的实践记录:

1.示例

如下图所示,在python_install.sh脚本中,在安装完Python3、配置完环境变量后,使用source /etc/profile 命令来重新加载配置文件,并更改Python的安装镜像源。但通过./python_install.sh执行脚本完成后,在命令行输入:python3,仍然提示“-bash: python3: command not found”(表示重新加载配置文件未生效,系统无法识别到python3命令)

2.原因

执行脚本时,脚本中的命令是在子shell中执行,子shell只能继承父shell的环境变量,而无法修改父shell的环境变量,所做的修改仅对当前子shell有效。所以,当脚本执行完成,回到shell命令行,原子shell脚本中执行的source命令也就不生效。

3.解决办法

方法一:

# 也就是上述提到的繁琐的方法./python_install.sh #(或sh python_install.sh)source /etc/profile

方法二(本文主要想表达的方法):

# 通过source方式执行脚本source python_install.sh#(或. python_install.sh注意点后面有空格)

4.shell中"."、"source"、"sh"、"./"的区别

命令

作用

作用域

source,等价于.(点)

用于使shell读取指定的shell文件,并依次执行文件中的所有语句

作用于当前shell进程

sh

执行指定shell脚本,在子shell中执行脚本中的语句

创建一个子shell,在新的namespace中执行此脚本,继承父shell环境变量,但不改变父shell环境变量,仅对当前子shell有效

./

执行当前脚本文件,前提是待执行的文件具有可执行属性,等价于sh

创建一个子shell,在新的namespace中执行此脚本,继承父shell环境变量,但不改变父shell环境变量,仅对当前子shell有效

5.其他注意事项

若shell脚本中使用了source命令,则需要使用bash(或source)来执行,因为sh和bash是不同的shell,source命令是bash shell的内置命令,从C Shell 而来,而sh中没有source命令,所以用sh或者./运行的时候,会开启一个子shell进程,子shell进程继承了父shell(无source命令)的特性,所以会报错“source: not found”。

6.卸载python3,再次使用脚本进行安装

rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps# 卸载python3whereis python3 |xargs rm -frv# 删除python3所有残余文件,注意是卸载Python3,千万要带3,否则会把系统自带的Python2和yum(依赖Python2)也卸载了whereis python3# 查看是否存在python3python3 # 进入python解释器环境,若提示“-bash: python3: command not found”则说明卸载成功

再次执行shell脚本,一键安装python

source python_install.sh

安装成功后如下图所示:

验证一下python3是否安装成功,以及脚本最后更改的pip镜像源是否生效:

从上图可以看出,python3安装成功,python镜像源已成功替换为阿里云镜像源。

小结


以上就是shell脚本中“source /etc/profile”无法生效的原因及解决办法,以及shell中"."、"source"、"sh"、"./"的区别,只要脚本中使用了“source /etc/profile”,就可以使用:source xxx.sh(脚本文件名称)来执行脚本,从而自动重新加载配置文件。

    推荐阅读
  • 油烟净水器怎么清洗(这个介绍很详细)

    安全是最为重要的,对于接触所有用电器我们都要关闭其电源,放掉其中的电荷。因为绝缘子湿水极易造成漏电,故要把绝缘子拆下,同时分开阴极针和阳极圆筒方便进一步清洗。避免清洗时弄脏地板,故将油烟净化器包裹起来,然后在容器中拆掉包裹袋。检查发现绝缘子如有烧坏的痕迹如有裂缝,则要更换掉;需把绝缘子和绝缘瓷上边的油污清洁干净,并保持干燥。

  • 南乳汁是什么(南乳汁的介绍)

    以下内容希望对你有帮助!南乳汁是什么南乳汁是一种做菜的调料,南乳汁又叫红腐乳、红方,它是用红曲发酵制成的豆腐乳。它表面呈枣红色,内部为杏黄色,味道带脂香和酒香,而且有点甜味。南乳汁以优质大豆为主要原料,用红曲米、绍酒等为辅料,经复合发酵精制而成,富含大量优质蛋白和人体所需的多种氨基酸,香气浓郁,风味醇厚,具有健脾开胃的功效。

  • 得过肝病的人应该注意什么(患上肝病除了治疗)

    会对肝脏造成强烈的刺激,造成肝脏损伤,而患有肝病的患者,饮酒会加重肝病症状,此外有研究表明,即使是少量饮酒,也会造成肝脏损伤。

  • 万花筒是运用了什么构成原理(万花筒是怎么发明的)

    万花筒是怎么发明的​这是我们一起探索的第157个实验1816年,苏格兰物理学家大卫·布鲁斯特爵士主要从事光学和光谱研究他在童年时代就十分喜欢光学实验一次,他在用多面镜子研究光的性质时看到了几面相对放置的镜子里经过多次反。

  • 有过精神出轨后还会出轨吗(精神出轨和肉体出轨哪个更不能原谅)

    离婚率成倍增长。很多男女因为各种不同的原因没有选择离婚,而产生了婚外情。"精神出轨"是相对肉体出轨而言的,是肉体出轨的前奏。总的来说男人肉体出轨机率高,而女人精神出轨要多。这段婚姻在理论上是可以继续存在下去的。但是你不能忘怀过去,对现在伴侣没有感情,那这种伤害不低于肉体出轨。

  • 王偏旁的字有哪些(王偏旁的字举例)

    王偏旁的字有哪些?本义是古代的最高统治者。秦汉以后,帝王改称为皇帝,“王”就成为封建皇族或功臣封爵的最高项,如:诸侯王、亲王、郡王等。也指在某个领域、某一方面取得成就的人,如:故事大王等。“王”一般作为名词,但有时也作为动词使用,指称王,多用于古代汉语中,读wàng。

  • 盆栽山荷叶怎么养(盆栽山荷叶方法)

    盆栽山荷叶怎么养温度:十五至二十八度比较合适。栽种后,由于它比较怕干旱,所以要及时浇足量的水。对花朵的修理,主要是开过花之后,将残花剪掉即可。对叶片的修理,主要是干枯的、以及衰老的叶,不要让它们继续留在枝条上。

  • 养向日葵一定要太阳吗(你知道吗)

    不过,使用排水性能好、含有腐殖质的土最佳,最好还施加些基肥。温度:它不耐寒,白天养殖的温度应调整在21-27℃左右,夜间的温度也不要太低,应调整在10-16℃。另外,温差不能太小,不然它的茎叶就有可能徒长。生长期可以1-2天补一次水,温度高时可多浇水。

  • 猜谜语40个(来猜谜语啦12505)

    来猜谜语啦12505一、释谜更精彩的猜谜空间:“来猜谜语啦”谜语可不猜,一定要看后面的解释二、今思迟制谜条数已达:12505三、今日五谜——如果觉得对,就可以留言异于原底的新底有时更令人惊喜——解释得好就是底,不必问原底。

  • 新封印传说做什么职业好(新封印传说幻兽攻略)

    由于策划一直跳票,白金徽章迟迟不出,于是只能每天刷一刷封印的宝藏地。结果今天刷着刷着,金光一闪!!!传说装备一枚!!!看来今天的运气不错啊,虽然传说爆率不是那么高,但是总比远古图好打吧。于是,这两个图就是可以经过所有能爆传说房间的路线,还等什么呢?留着最后一点点疲劳刷就好,也可以选择全图,全图最后翻牌金币大概是4W,而且也不需要什么好装备,搬砖党的福音啊!!!