例如bash
,可以通过传递标志--norc --noprofile
来阻止读取 shell 初始化文件。
相当于什么sh
?
如果没有sh
,是否至少有 1 个dash
?
(我尝试过基于暂时取消设置的黑客攻击HOME
,但它们对于生产工作来说似乎太脆弱了。)
答案1
sh
仅负载.profile
如果它是登录 shell,即如果使用以 开头的参数 0 调用它-
。因此,如果您不想/etc/profile
被~/.profile
读取,请使用默认参数 0(可执行文件的名称)调用 shell。
如果某些东西将 shell 作为登录 shell 执行,则您无法控制参数。如果不是,则该 shell 不是登录 shell。
除了 shell 是登录 shell 时加载的文件之外,某些sh
实现还会加载另一个文件:环境变量中指示的文件ENV
。如果您正在调用 shell 并且不想加载任何文件,请确保ENV
未设置。
答案2
看起来不像。您可以在下面的链接中找到该代码。似乎没有标志来控制这种行为。
http://git.kernel.org/cgit/utils/dash/dash.git/tree/src/main.c#n147