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

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

    推荐阅读
  • 凉水料与翡翠的区别(凉水料与翡翠怎么分)

    下面希望有你要的答案,我们一起来看看吧!凉水料与翡翠的区别凉水料比翡翠稍重。同样大小的凉水要比翡翠稍重,其密度为3.47,翡翠的密度在3.2-3.4之间,所以要比翡翠重。其重量只差相对比较明显,所以不难区别。翡翠表面可见苍蝇翅。在刚切开的原石上可以很清楚的看见类似苍蝇翅膀一样的东西,这是翡翠的独有特性。而且翡翠有其独有的翠性,这也是其他玉石没有的。翡翠石纤维交织结构,让翡翠从外面看很像有棉絮状物质。

  • 地球公转方向是什么(地球公转方向介绍)

    地球公转方向是什么地球公转,是指地球按一定轨道围绕太阳转动。像地球的自转具有其独特规律性一样,由于太阳引力场以及自转的作用,而导致的地球公转,也有其自身的规律。地球的公转遵从地球轨道、地球轨道面、黄赤交角、地球公转的周期、地球公转速度和地球公转的效应等规律。在地球公转的过程中存在两个明显周期,分别为回归年和恒星年,回归年与恒星年的时间不一样。两者一年的时间差称为岁差。

  • 垃组词(垃组词圾组词)

    独立的、多余的、突兀的土块是垃之范式。通常用作连绵词“垃圾”。表示“尘土和扔掉的脏东西。”。

  • 小爱同学怎么连续聊天 小爱同学怎么和我聊天

    小爱同学连续聊天的方法如下:1、打开小爱同学的第三方技能闲聊,然后对着小爱同学说“打开闲聊”。小爱同学支持语音交互,并提供播放音乐、电台点播、智能家居等功能。2018年5月,小爱同学获“2018领先科技成果奖·黑科技”和“2018领先科技成果奖·新产品”两项奖。

  • 租车跑滴滴费用(租车跑滴滴之准备工作)

    今年的武汉特别难,找工作特别难,创业就更难!下面就给大家全面的介绍下跑滴滴这份“工作”!跑滴滴基本要求:1C1驾照满3年2最近3个计分周期没有被扣满12分3无犯罪记录4人证网约车从业资格证以上是自身的基本要求!注册滴滴账号滴滴目前已经限制了注册新司机滴滴账号,省会城市关闭了租车加盟的申请,只能选择自带车加盟注册!合同签署好后,按照预约的时间,去中心仓提车就好了!

  • 哇唧唧哇肖战vs毛不易(哇唧唧哇资源谁更好)

    先是自家艺人周震南、焉栩嘉、夏之光、赵磊、翟潇闻从《创造营》出道,和其他六位组成了R1SE男团,资源相当不错。但如果要说今年上升势头最猛的一位,恐怕要数肖战了。今年在《创造营》他也是在被质疑身高不足以做爱豆的情况下逆袭,从第一期开始就断层C位直至出道,出道之后周震南除了团队资源不错,个人也是成为了各大品牌的宠儿,已经拿下了多个代言。

  • 感恩节是哪个国家的节日(感恩节简介)

    初时感恩节没有固定日期,由美国各州临时决定。直到美国独立后的1863年,林肯总统宣布感恩节为全国性节日。1941年,美国国会正式将每年11月第四个星期四定为“感恩节”。感恩节假期一般会从星期四持续到星期天。1879年加拿大议会宣称11月6日是感恩节和全国性的假日。在随后的年代,感恩节的日期改变了多次,直到在1957年1月31日,加拿大议会宣布每年十月的第二个星期一为感恩节。也有学者倡议设立“中华感恩节”,以弘扬传统文化。

  • 喝豆浆能减肥吗(晚上喝豆浆能减肥吗)

    所以生豆浆必须煮熟才能食用,否则可引起喉部发痒、恶心、呕吐、腹痛、腹泻、头疼、晕眩等中毒症状。南瓜的营养价值很高,可降血脂,助消化,提高机体的免疫力。南瓜和豆浆的植物纤维结合,可很好的帮助消化,降低胆固醇,此为去油脂的减肥佳品。因为鸡蛋中的粘液蛋白容易与豆浆中的胰蛋白酶相结合,产生人体难以消化的物质。因为红糖中的有机酸能与豆浆中的蛋白质结合,产生变性沉淀物。

  • 击毙巴格达迪行动(残暴如被猎杀的巴格达迪)

    美方悬赏500万美元追杀萨勒比和恐怖组织另外两名高级成员。去年7月,巴格达迪身体出问题,萨勒比开始接管恐怖组织全面事务。几个小时后,萨勒比被恐怖组织选为新首领。2019年10月26日,美军特种部队发动突袭,巴格达迪在住所地道中自爆身亡。巴格达迪之死是对ISIS的重大打击,但其残部仍在伊拉克和叙利亚边境的荒漠地带活动。

  • 微信正在输入为什么有的人没有(微信有的人没有正在输入中)

    微信是腾讯公司于2011年1月21日推出的一款面向智能终端的即时通讯软件。微信为用户提供聊天、朋友圈、微信支付、公众平台、微信小程序等功能,同时提供城市服务、拦截系统等服务。2012年4月,腾讯公司将微信推向国际市场,更新为“Wechat”。