如何写一个bash脚本来设置全局环境变量?

前端之家收集整理的这篇文章主要介绍了如何写一个bash脚本来设置全局环境变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最近我写了一个脚本,设置一个环境变量,看看:
#!/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中访问。

它甚至更限制。如果一个shell生成一个subshel​​l,那个subshel​​l可以访问父环境变量,但是如果subshel​​l创建了一个环境变量,那么它在父shell中是不可访问的。

如果所有的shell都需要访问同一组变量,您可以创建一个启动文件,为您设置它们。这在BASH中通过$ HOME / .bash_profile和$ HOME / .bashrc文件以及$ HOME / .profile(如果$ HOME / .bash_profile不存在)完成。其他shell有自己的启动文件集。一个用于登录,一个用于在没有登录的情况下生成的shell。请参阅联机帮助页,了解使用哪些启动脚本以及它们的执行顺序。

你可以尝试使用共享内存,但我相信只有在进程正在运行时才能工作,所以即使你想出了一种设置一块共享内存的方法,它会在命令完成后立即消失。 (我很少使用共享内存,除了命名管道)。否则,真的没有办法在一个shell中设置环境变量,并有另一个shell自动拾取它。您可以尝试使用named pipes或将该环境变量写入文件以供其他shell使用。

想象一下,如果有人在我不知情的情况下改变一个shell的环境,可能会发生的问题。

原文链接:https://www.f2er.com/bash/389141.html

猜你在找的Bash相关文章