最近我写了一个脚本,设置一个环境变量,看看:
#!/bin/bash echo "Pass a path:" read path echo $path defaultPath=/home/$(whoami)/Desktop if [ -n "$path" ]; then export my_var=$path else echo "Path is empty! Exporting default path ..." export my_var=$defaultPath fi echo "Exported path: $my_var"
它的工作原理很大,但问题是my_var是本地可用,我的意思是在控制台窗口,我运行脚本。
如何编写一个脚本,它允许我导出全球环境变量,可以看到无处不在?
每个shell都有自己的环境。没有万能环境会奇迹般地出现在所有控制台窗口中。在一个shell中创建的环境变量无法在另一个shell中访问。
原文链接:https://www.f2er.com/bash/389141.html它甚至更限制。如果一个shell生成一个subshell,那个subshell可以访问父环境变量,但是如果subshell创建了一个环境变量,那么它在父shell中是不可访问的。
如果所有的shell都需要访问同一组变量,您可以创建一个启动文件,为您设置它们。这在BASH中通过$ HOME / .bash_profile和$ HOME / .bashrc文件以及$ HOME / .profile(如果$ HOME / .bash_profile不存在)完成。其他shell有自己的启动文件集。一个用于登录,一个用于在没有登录的情况下生成的shell。请参阅联机帮助页,了解使用哪些启动脚本以及它们的执行顺序。
你可以尝试使用共享内存,但我相信只有在进程正在运行时才能工作,所以即使你想出了一种设置一块共享内存的方法,它会在命令完成后立即消失。 (我很少使用共享内存,除了命名管道)。否则,真的没有办法在一个shell中设置环境变量,并有另一个shell自动拾取它。您可以尝试使用named pipes或将该环境变量写入文件以供其他shell使用。
想象一下,如果有人在我不知情的情况下改变一个shell的环境,可能会发生的问题。