【大爆炸】 source linux

# os.environ 设置的是临时环境变量,只能在一次运行中使用
# 这个环境变量只在进程和子进程中可以获取到
# 这里所谓的修改环境变量,仅仅影响当前python进程后续启动的子进程,对当前python进程以外的环境是没有任何影响的。
# https://www.zhihu.com/question/55937152

 

# source命令(从 C Shell 而来)是bash shell的内置命令. 点命令,就是一个点符号,是source的另一名称。这两个命令都以一个脚本为参数,
# 该脚本将在当前shell的环境执行,即不会启动一个新的子shell。所有在脚本中设置的变量都将成为当前Shell的一部分。
# 不会启动子shell, 在source filename 与 sh filename 及. / filename执行脚本的区别 #
# 当shell脚本具有可执行权限时,用sh
# filename与. / filename执行脚本是没有区别得。./ filename是因为当前目录没有在PATH中,所有”.”是用来表示当前目录的。
# sh
# filename
# 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
# source
# filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

# 在shell中执行程序时,shell会提供一组环境变量。 export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作

# 一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。

# 要想永久生效,需要把这行添加到环境变量文件里。有两个文件可选:“/etc/profile”和用户主目录下的“.bash_profile”,“/etc/profile”对系统里所有用户都有效

# 登陆系统才会执行/etc/profile (login 初始化环境变量等 登陆shell 非登陆shell ),不登陆系统就会执行 /etc/rc.d/rc.local (开机自动启动)

# https://www.cnblogs.com/syavingcs/p/14058134.html
# 设置环境变量的脚本,可以放在profile.d目录下面,但开机执行任务不应该放在profile.d目录下,因为每次登陆都会执行profile.d目录下的文件,会导致重复执行,
# 设置开机启动任务,应该放在rc.local中执行,它只会在系统启动时执行一次。

 

login shell 和 non-login shell的最大区别在于读取环境变量的配置文件不同,当系统启动时或你开启一个新到终端登录系统时,系统通过调用/bin/login程序处理登录并在 一个shell中显示命令行提示符,这个shell就是login shell;该shell程序可以是bash也可以是sh或csh,具体使用哪种shell可以在/etc/passwd中设置(/bin/login程 序读取该文件决定使用哪种shell)

 


# Linux登录shell和非登录(交互式shell)环境变量配置 https://www.cnblogs.com/woshimrf/p/shell-conf.html

posted @ 2021-03-04 16:08  峡谷恶霸  阅读(78)  评论(0编辑  收藏  举报