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

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

    推荐阅读
  • 红烧牛腩的做法(如何制作红烧牛腩)

    接下来我们就一起去了解一下吧!红烧牛腩的做法准备牛腩、花椒、葱段、姜片,先把牛腩入锅焯水,煮开后捞出切块。锅中热油,再将花椒、姜片、葱段炒香,倒入牛腩翻炒均匀,再加入料酒、老抽、白糖,翻炒上色。将炒好的牛腩倒入砂锅中,倒入清水煮开后,再用慢火炖半小时,撒少许盐调味即可。

  • 刺客信条英灵殿所有版本更新(轻松升级刺客信条)

    本周早些时候,育碧公布了他们的新平台UbisoftConnect将UPlay和UbisoftClub进行了整合。通过这套新系统,玩家可以进行云存档,并支持多款育碧游戏的跨世代存档同步,其中一款就是《刺客信条:英灵殿》。UbisoftConnect目前尚未正式发布,新平台将于11月10日随XboxSeriesX和XboxSeriesS同步推出,随后将在11月15日登陆PS5。《刺客信条:英灵殿》也将于XboxSeriesX/S同日在11月10日发售,并将在PS5发售首日进行支持。

  • 本命年戴黄金要注意什么(本命年戴黄金需要注意些什么)

    中国人是很崇尚荣华富贵、大吉大利,财源广进的旺财之势是人人都祈求的,所以中国人一般相比于银饰来说,更喜欢穿戴金饰,认为黄金是至高无上身份的象征,是代表着财运亨通。这样携带方便,也能起到良好的辟邪避凶的作用。

  • 风暴舞剧情介绍(风暴舞简介)

    12岁时,父母在滨城遭遇意外离世。成为孤儿的李俊杰被遣送回故乡崇海。在孤儿院,李俊杰与时云昊相识,李俊杰的主动保护让两人成为彼此最好朋友。李俊杰决定离开摩世独自追查线索,抓住凶手加莱为陈刚报仇。该剧讲述了李俊杰受雇于一家信息安全公司,在一系列的任务中,他发现这家公司内部与境外邪恶势力之间有千丝万缕的关联,在行动组高级组长周子萱的帮助下,二人合力调查,揭露内幕的故事。

  • 生存战争2可以双人联机(生存战争2是什么类型的游戏)

    生存战争2不能联机游戏生存战争2暂时依然不支持联机目前游戏只有单人模式,在单人模式中有挑战以及生存模式两种玩法供我们选择在目前的版本中并不支持多人联网游戏,我来为大家科普一下关于生存战争2可以双人联机?生存战争2可以双人联机生存战争2不能联机游戏。生存战争2暂时依然不支持联机。

  • 新苏伊士运河(苏伊士运河终于通了)

    随着重型货轮“长赐”号成功脱困,苏伊士运河已于当地时间3月29日18时恢复通航,约113艘船将于29日晚至30日上午通过运河。苏伊士运河管理局主席表示,接下来,运河管理局将解决船只拥堵问题,运河有望在4天内恢复正常通行。据埃及独立报报道,埃及总统海港和苏伊士运河事务顾问马米什表示,埃及有权向“长赐”号船东日本正荣汽船公司索赔。索赔内容包括货船搁浅给苏伊士运河管理局造成的物理损失、经济损失和救援船只开销。

  • 丝瓜汤怎么做才好喝(怎么做丝瓜汤才好喝)

    丝瓜汤怎么做才好喝丝瓜1条,鸡蛋1-2个,葱、姜、蒜适量,生抽适量。待锅里的汤煮开后,放入切好的丝瓜片,继续大火煮丝瓜。待蛋液开始凝固时,放入较多的食盐,用勺子搅散;再放入适量的生抽,增添风味,喜欢吃鸡精的朋友也可以放点鸡精。最后一步,就是关火并放入事先切好的葱花,很快香气扑鼻的好喝的丝瓜汤就可以开喝啦。

  • 明天要远足第一课时课后反思(明天要远足教案)

    作品没有正面写远足,却让人实实在在感受到一个孩子对远足的向往和期盼。带目字旁的字,大多和眼睛有关。前3笔应写得紧凑些,秃宝盖可适当宽一些,“子”的弯钩位于竖中线位置,起笔和收笔基本在同一条线上。学生临写,教师巡视指导,同桌相互交流,指出书写的优点和不足,并改正。)帮助学生理解“洁白”“柔软”的意思。

  • 阳江社保卡办理指南(阳江市社保卡办理)

    检查资料完整性、核实申请人或代办人身份,双方签字确认《广东省社会保障卡个人业务申请表》。省卡系统对申请人的基本信息和发卡状态进行比对核查,经比对个人信息正确、唯一,且符合发卡条件的,接受发卡申请。经核查不符合受理条件的,卡经办网点应出具经办部门印章和注明日期的书面凭证,并告知授权经办人解决途径。(四)经市卡中心批次确认后,省卡系统将预开户文件通过FTP服务器反馈服务银行。

  • 20世纪化学所取得的成就(二十世纪上半页我国化学成就概述)

    化学作为现代科学的一个分支在中国初步确立起来了。“壬戌学制”公布后不久,政府就制定了中小学课程标准,规定初级中学自然科包括生物、物理及化学,其中物理与化学合并为“理化”,在初二和初三讲授。此后每年各地都有举办这类讲习会的,大大提高了化学教师的水平。这一届共录取新生5371人,化学专业的有396人,比例已是相当大了。在化学设备方面,国民政府明文规定各校设备费不得少于经常费用的若干成。