我一直在编写一堆 bash 脚本,以便使用 CollabNet 的 SVN 客户端和 GNOME Keyring Daemon(又名 GKD)实现非交互式、安全、基于 cron 的 SVN 签出,其中一个脚本旨在启动 GKD、收集其输出(本质上是几个环境变量),并在运行脚本的用户的 shell 中导出这些变量。所有这些都在用户登录后通过在 ~/.bashrc 中获取 bash 脚本来完成。
问题是这些环境变量不会被导出,因为脚本正在子 shell 中运行,脚本完成后子 shell 就会退出,并且环境变量将被永久取消设置。
那么,问题是如何永久设置这些变量,这意味着它们被导出并且即使在登录-注销会话中也保持不变?
答案1
只需将变量回显到主目录(或其他地方)中以 . 开头的另一个 shell 脚本即可(因此它在默认的 ls 视图中不可见)。修改您的 .bashrc,以便在启动时执行此 shell 脚本。
例子:
foo='What the heck'; echo "foo='$foo'" > ~/.startup.sh
然后将其放入 ~/.bashrc 中就完成了:
. ~/.startup.sh