如何解决使用 exec 启动脚本时未获取 bash 配置文件
出于技术原因,我必须启动一个脚本来设置执行脚本的 GROUP ID,如下所示:
exec sg group_name script
脚本正在使用 .bashrc 的一些函数源,如果我直接启动脚本,一切正常,但是当我使用 exec sg 时,源函数不可用。
解决方法
.bash_profile
仅用于 login shell。使用传递给它的命令行调用的 shell 不是登录 shell;作为脚本解释器调用的 shell 也不是登录 shell。
如果您希望文件由 bash 的非登录、非交互式副本(特别是)获取,请将该文件的名称放在环境变量 BASH_ENV
中。要对严格符合 POSIX 的 shell(或在 POSIX 兼容模式下运行的 bash)执行相同操作,请改用名称 ENV
。
因此:
cat >yourscript.bash <<'EOF'
somefunc() { whatever; }
EOF
export BASH_ENV=$PWD/yourscript.bash
exec sg group_name yourscript
...而 yourscript
将能够运行 somefunc
。
但实际上,最好不要这样做;相反,让 yourscript
明确获取定义其所需函数的任何库,因此其操作行为与调用它的用户无关。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。