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

在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(脚本文件名称)来执行脚本,从而自动重新加载配置文件。

    推荐阅读
  • 武则天是四川哪里人(武则天的祖籍是哪里)

    武则天是四川哪里人武则天,籍贯并州文水,生于利州。唐朝开国功勋武士彟的次女,生母杨氏是武士彟的续妻,陇右大士族、隋朝宰相、遂宁公杨达之女。武则天统治的前期,重用酷吏,严厉打击反对他的元老重臣,勋贵旧族,就此打破大族控制政局,垄断高官的局面。世人据其尊号“则天大圣皇帝”称之为武则天(则,法则也,以为法则也。

  • 工作场所的个人防护注意事项(办公场所别忘做好个人防护)

    9月3日,武汉大学人民医院呼吸内科主任医师胡克接受记者采访时提醒,办公室属于相对密闭的空间,也是上班族长时间停留的场景,大家一定做好个人防护,既保护自己、又保护了身边同事。这些场景坚持戴口罩对于呼吸道传染病,正确佩戴口罩是最有效的保护策略。此外,要避免扎堆搭乘电梯,在电梯里减少接触公共部位。搭配餐食时注意营养均衡、清淡适口,有利于保持身体免疫力。在卫生间要佩戴口罩,不要摘下口罩补妆、吸烟。

  • 糖球山楂的做法(怎样做糖球山楂)

    下面内容希望能帮助到你,我们来一起看看吧!糖球山楂的做法准备300克山楂、清水120克、冰糖120克。先把山楂处理一下,去除凹陷处的杂质。锅里倒上适量清水,放入冰糖。再加上一小勺白醋,迅速关火。然后倒入洗干净的山楂,迅速的翻炒。翻炒至每个山楂都均匀的裹满糖浆,就可以出锅了,晾凉就可以吃了。

  • 常州就业见习基地申报材料

    所需材料1、《就业见习基地申请表》2、就业见习管理方案3、就业见习制度办理流程1、登录“江苏人社网上办事服务大厅”,首页地区选择“常州”,点击“单位办事”——“就业创业”——“高校毕业生就业服务”——“就业见习基地申报”——“申报”。

  • 南通七大古镇(古镇初春焕生机)

    人民网记者王继亮摄古镇初春生机盎然。人民网记者王继亮摄人民网南通3月16日电又是一年春到时,江苏省南通市崇川区唐闸古镇春意浓浓,修缮后的古镇和蜿蜒绵长的古运河相互辉映,让人流连忘返。近年来,崇川区对古镇实施保护性修缮,唐闸古镇焕发出新的生机,新近入选“大运河文化带和国家文化公园建设”创新案例。

  • 胞字组词(胞字组词有哪些)

    下面内容希望能帮助到你,我们来一起看看吧!胞字组词胞字组词:细胞、难胞、侨胞、同胞、胞衣、胞子、台胞、衣胞、胎胞、隔胞、目胞、胞波、胞胎、胞与、人胞、山胞、胞人、胞兄、胞族、腹胞。胞,汉语常用字(一级字),读作bāo,最早见于战国。其本义是胎衣,又可引申为同胞。

  • 能买驾驶证吗现在(现在驾驶证还能买吗)

    买卖驾驶证是违法的行为。最新机动车驾驶证申领和使用规定第八条驾驶机动车,应当依法取得机动车驾驶证。

  • 脆柿为什么会涩(脆柿买回来很涩怎么办)

    以下内容大家不妨参考一二希望能帮到您!脆柿为什么会涩脆柿子涩口可能是还没完全成熟所致。因此大家买脆柿子时,一定要黄色的,这样的才是彻底成熟了的。脆柿子的柿子皮上含有大量的鞣酸,食用后也会出现涩口的情况。所以,最好是削皮后再吃。热水浸泡脱涩:将有涩味的脆柿子放在40°C的水中,恒温保持24小时即可脱去涩味。注意:用这种方法脱涩味的柿子不可久放,最好保证在12小时内吃完,另外,热水应盖住整个柿子。

  • 澳洲留学资金要求有哪些呢(2022-2023年度最新澳洲留学费用公布)

    2022-2023年度最新澳洲留学费用公布近期,澳洲八大陆续开始公布最新的学费情况,整体学费明显上涨,部分学科的涨幅之大令人震惊下面,小编根据各校官网显示的最新情况以及相关新闻,为大家整理了一下目前的澳洲留学费用最新看点在文章结尾,小编还会向。

  • 小学作文300字大全(小学作文300字范文)

    小学作文300字大全这是一个阳光暖暖的午后,妈妈终于答应我去期盼已久的万象城溜冰。包饺子其实很简单,就是将拌好的馅放进饺皮里,然后再将饺皮对折、捏紧,饺子就完成了。听了妈妈的话,我又努力地包起了饺子。我还创造出带花包的饺子、长方形的饺子、三角形的饺子。最好看的是用两个饺皮包出的“太阳饺”。感恩的节日来临,似乎在提醒我们需要去感恩。其实不用等到感恩节,每一天你都可以表达你的感恩之心。