定位系统环境变量

bash shell 会作为登录shell,启动登录shell会从5个不同的登录文件中读取命令
/etc/profile 默认的主启动文件
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile

有些的linux发行版中采用可拆卸式论证模块 PAM(Pluggable Authentication module)
PAM会在bash shell之前处理 PAM文件包括/etc/environment $HOME/.pam_environment

另外4个文件是针对用户的
1    /etc/profile 是bash shell默认的主启动文件, 只要你登录linux ,bash shell就会执行/etc/profile文件中的命令

2 $HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile这4w个提供一个用户专属的启动文件来定义该用户所用到的环
境变量。大多数Linux发行版只用这四个启动文件中的一到两个


注意,这四个文件都以点号开头,这说明它们是隐藏文件(不会在通常的ls命令输出列表中
出现)。它们位于用户的HOME目录下,所以每个用户都可以编辑这些文件并添加自己的环境变
量,这些环境变量会在每次启动bash shell会话时生效。

shell会按照按照下列顺序,运行第一个被找到的文件,余下的则被忽略:
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile
注意,这个列表中并没有$HOME/.bashrc文件。这是因为该文件通常通过其他文件运行的。


交互式 shell 进程
你的shell不是在登录中启动,那么你启动的shell叫做交互式shell
做为交互式shell是不会启动/etc/profile.
bashrc文件有两个作用:一是查看/etc目录下通用的bashrc文件,二是为用户提供一个定制自
己的命令别名(参见第5章)和私有脚本函数(将在第17章中讲到)的地方。

最后一种shell是非交互式shell。系统执行shell脚本时用的就是这种shell。不同的地方在于它
没有命令行提示符。但是当你在系统上运行脚本时,也许希望能够运行一些特定启动的命令


为了处理这种情况, bash shell提供了BASH_ENV环境变量。当shell启动一个非交互式shell进
程时,它会检查这个环境变量来查看要执行的启动文件。如果有指定的文件, shell会执行该文件
里的命令,这通常包括shell脚本变量设置。
在本书所用的CentOS Linux发行版中,这个环境变量在默认情况下并未设置。如果变量未设
置, printenv命令只会返回CLI提示符:

在本书所用的Ubuntu发行版中,变量BASH_ENV也没有被设置。 记住, 如果变量未设置, echo
命令会显示一个空行,然后返回CLI提示符:

那如果BASH_ENV变量没有设置, shell脚本到哪里去获得它们的环境变量呢?别忘了有些
shell脚本是通过启动一个子shell来执行的(参见第5章)。子shell可以继承父shell导出过的变量。
举例来说,如果父shell是登录shell,在/etc/profile、 /etc/profile.d/*.sh和$HOME/.bashrc文件中
设置并导出了变量,用于执行脚本的子shell就能够继承这些变量。
要记住,由父shell设置但并未导出的变量都是局部变量。子shell无法继承局部变量。


对于那些不启动子shell的脚本,变量已经存在于当前shell中了。所以就算没有设置
BASH_ENV,也可以使用当前shell的局部变量和全局变量。


对全局环境变量来说(Linux系统中所有用户都需要使用的变量),可能更倾向于将新的或修
改过的变量设置放在/etc/profile文件中,但这可不是什么好主意。如果你升级了所用的发行版,
这个文件也会跟着更新,那你所有定制过的变量设置可就都没有了。
最好是在/etc/profile.d目录中创建一个以.sh结尾的文件。把所有新的或修改过的全局环境变
量设置放在这个文件中

在交互式shell中使用source执行全局环境变量

在大多数发行版中,存储个人用户永久性bash shell变量的地方是$HOME/.bashrc文件。这一
点适用于所有类型的shell进程。但如果设置了BASH_ENV变量,那么记住,除非它指向的是
$HOME/.bashrc,否则你应该将非交互式shell的用户变量放在别的地方。

alias命令设置就是不能持久的。你可以把自己的alias设置放在
$HOME/.bashrc启动文件中,使其效果永久化。

环境变量有一个很酷的特性就是,它们可作为数组使用。数组是能够存储多个值的变量。这
些值可以单独引用,也可以作为整个数组来引用
Mytest=(one  two  three)
  2.echo $Mytest 等于第一个参数相当于 a[0]
 3 echo ${Mytest[1]}等于第二个参数 相当于 a[1]
4用*显示整个数组 echo ${Mytest[*]}
通过索引位置改变值 Mytest[2]=”wang”;

unset命令删除数组中的某个值
删除整个数组unset Mytest

内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
内容概要:本文深入探讨了利用历史速度命令(HVC)增强仿射编队机动控制性能的方法。论文提出了HVC在仿射编队控制中的潜在价值,通过全面评估HVC对系统的影响,提出了易于测试的稳定性条件,并给出了延迟参数与跟踪误差关系的显式不等式。研究为两轮差动机器人(TWDRs)群提供了系统的协调编队机动控制方案,并通过9台TWDRs的仿真和实验验证了稳定性和综合性能改进。此外,文中还提供了详细的Python代码实现,涵盖仿射编队控制类、HVC增强、稳定性条件检查以及仿真实验。代码不仅实现了论文的核心思想,还扩展了邻居历史信息利用、动态拓扑优化和自适应控制等性能提升策略,更全面地反映了群体智能协作和性能优化思想。 适用人群:具备一定编程基础,对群体智能、机器人编队控制、时滞系统稳定性分析感兴趣的科研人员和工程师。 使用场景及目标:①理解HVC在仿射编队控制中的应用及其对系统性能的提升;②掌握仿射编队控制的具体实现方法,包括控制器设计、稳定性分析和仿真实验;③学习如何通过引入历史信息(如HVC)来优化群体智能系统的性能;④探索中性型时滞系统的稳定性条件及其在实际系统中的应用。 其他说明:此资源不仅提供了理论分析,还包括完整的Python代码实现,帮助读者从理论到实践全面掌握仿射编队控制技术。代码结构清晰,涵盖了从初始化配置、控制律设计到性能评估的各个环节,并提供了丰富的可视化工具,便于理解和分析系统性能。通过阅读和实践,读者可以深入了解HVC增强仿射编队控制的工作原理及其实际应用效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值