将“export BASH_ENV=~/.bashrc”放入我的 .bashrc 中是个好主意吗?

将“export BASH_ENV=~/.bashrc”放入我的 .bashrc 中是个好主意吗?

假设我的 Bash 有一些广泛的~/.bashrc自定义功能,不仅可以帮助我交互使用,还可以帮助我编写脚本(别名、函数、变量等)。我希望我的所有脚本都可以使用此功能,因此我正在考虑设置BASH_ENV~/.bashrc(这似乎是做到这一点的方法。)

我的问题是,这有什么问题吗?

  • 一个问题是我使用的任何第三方 shell 脚本都可能与我的~/.bashrc.但我认为这是一个可以管理的问题,因为无论如何我都会在使用它们之前对其进行审查(或者盲目地相信像 Github 明星这样深奥的统计数据来认为它们是安全的),并且只是偶尔降低自己的水平来取消BASH_ENV任何可能行为不当的脚本。
  • 另一个问题是速度,但说实话,我的~/.bashrc并没有那么重,如果我想要速度,我就不会使用 shell 脚本。
  • 另一个问题是安全。但如果我运行一个具有某种 setuid 或特权状态的恶意脚本,我已经过着 YOLO 的生活方式了,而我的生活~/.bashrc只会成为我彻底 ganking 的主菜中的温和调味品。
  • 另一个问题是,从纯粹主义者的角度来看,最好将我的~/.bashrc文件分成两个文件,一个用于交互式使用,一个用于脚本编写,并且可能将其设置为交互式文件是脚本文件的超集。但除了那种模糊的纯洁感之外,这听起来似乎是付出了太多的努力却收获太少。
  • 另一个问题是可移植性,但我主要为自己编写脚本。如果我以后想与其他人分享,那么概括起来就不那么困难了。如果情况变得更糟,我总是可以编写一个脚本来自动内联~/.bashrc我正在使用的任何功能。这听起来不像是一个 NP 问题。
  • 也可以说我的方法是有缺陷的,因为任何可能受益于 my 的非标准功能的脚本都~/.bashrc表明这样的脚本应该首先用另一种语言编写。
  • 另一方面,Unix/Linux 哲学不仅仅是一套标准,而且是一套根据您的需求定制环境的工具,所以为什么不呢。

答案1

IMO,不,这不是一个好主意。

您最好expand_aliases在使用它的每个脚本的顶部显式获取函数和变量库(别名在非交互式 shell 中不起作用,除非设置了 shell 选项) - 这样您就不会冒破坏的风险(大声地、明显地,或者更糟糕的是,巧妙地)系统上数百或数千个现有脚本中的任何一个。

然而,一如既往,最终的规则是:这是你的系统,如果你愿意,你可以破坏它。

相关内容