是否有可能是非交互式的登录外壳?
在解释此流程图时 我发现在男子bash中: 当bash作为交互式登录shell或通过--login选项作为非交互式shell调用时,它首先从文件/ etc / profile中读取并执行命令(如果该文件存在)。 声明交互式登录外壳读取/etc/profile(不带--noprofile) 另外,非交互式外壳,选项为--loginread/etc/profile 这似乎留下了一些可能的登录外壳程序(其中以$0开头的-)可能是非交互的(运行脚本,可能像这样简单date)可能无法读取(源代码)/etc/profile。 确认或否认这个想法: 首先,我尝试使用su -l -,-以第一个字符开头的登录shell,但是我无法使其变为非交互式(并能够提供测试以测试它)。 叫类似 $ bash -c 'date' -bash 不会报告为登录外壳程序(即使第一个字符是-)。 尝试一下以揭示细节: $ bash -c 'echo "$0 $- ||$(shopt -p login_shell)||";date' -bash -bash hBc ||shopt -u login_shell|| Fri Aug 19 06:32:31 EDT 2016 该$0有-作为第一个字符,没有i在价值(交互)$-,但它未报即一个login_shell(在-u)。在这种情况下,/ etc / profile没有被读取,但是我不确定这是正确的测试。 在此答案中还提到了“罕见的非交互式登录外壳” ,但对这个问题不够具体。 这个家伙的结论是,/etc/profile总是读。 阅读摘要表:交互式和非交互式登录shell均已阅读 …