linux脚本里运行环境变量,不重启终端,重新登陆用户,让其一直有效,在脚本退出后,能被其他程序访问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux脚本里运行环境变量,不重启终端,重新登陆用户,让其一直有效,在脚本退出后,能被其他程序访问相关的知识,希望对你有一定的参考价值。

linux 在脚本里运行 source .bashrc或者./.bashrc
只会让当前脚本里有效,但是脚本结束你在env 环境变量就又变回来了

如何让环境变量一直有效,不是退出脚本后,重启终端,重登用户。
本来在控制台里. .bashrc就可以让环境变量永久有效了,但是在脚本里,如何产生相同功效

1. source 脚本名
2. 如果不允许source脚本, 可以在脚本中调用gdb修改父进程的环境变量。
如下脚本设置环境变量A为"B":

#!/bin/sh
gdb /proc/$PPID/exe $PPID <<END >/dev/null
call setenv("A", "B", 0)
END
参考技术A 感觉这比较无意义。当你运行source时,启动的是另进程,source .bashrc只会改变,脚本内部的env,结束后就没了。追问

对啊,我就是要,结束后能让外部的也生效,有这种方法么

参考技术B 直接在脚本里用命令把变量追加到~/.bashrc里面:
echo A=\"asdada\" >> ~/.bashrc
再source一下。

Linux终端里除了cd命令,其他命令都报没有那个文件或目录

具体是我在bash.bashrc里修改了环境变量。然后source了。然后手误又输入了一下bash。然后dir.ls等各种命令他都回复没有那个文件和目录。包括我想sudo gedit打开bash.bashrc把修改去掉他也不识别。退出,重启,都不管用。现在打开终端就出现下面的几句。bash:lesspipe 没有那个文件或目录。bash:dircolors没有那个文件或目录
Bash:uname没有那个文件或目录。
Bash:ls no such file

参考技术A 关键是要把那个环境变量改回来,你用命令的绝对路径试试。比如说,你的gedit可执行文件的路径是/usr/bin/gedit,你就试试sudo /usr/bin/gedit bash.bashrc。 参考技术B 检查环境变量PATH。 或者 exit ,退出当前的bash。 参考技术C 本地救援模式进去试试修改。暂时还没遇到过这么惨烈的事~

以上是关于linux脚本里运行环境变量,不重启终端,重新登陆用户,让其一直有效,在脚本退出后,能被其他程序访问的主要内容,如果未能解决你的问题,请参考以下文章

linux下创建一个脚本,双击后,点“在终端中执行”没反映,但点运行脚本执行,请问是为啥?

Linux终端里除了cd命令,其他命令都报没有那个文件或目录

在linux里修改了环境变量或者某些配置文件之后,怎么在不重开终端的情况下让修改起作用?

虚拟机里怎么开始linux系统,打startx命令提示错误

Linux下如何使环境变量文件生效

一文彻底搞懂linux全局环境变量生效顺序