小编Mic*_*ter的帖子

我的脚本如何确定它是由 bash 还是 dash 运行?

我正在两个不同的系统上运行全新的 Oneiric 安装(即不是升级),并且遇到了相同的一组看似相关的问题。

最令人沮丧的是,当我使用从 Mac OS X 随身携带的 .profile 和 .bashrc 时,通过 LightDM 登录到 X 会立即将我注销。我相信这是因为当运行“/bin/sh”时,它表现为/bin/dash,但仍然将$SHELL 变量设置为/bin/bash。

外推法

我有一个巨大的.bashrc。如果你愿意,你可以在这里看到它,但它的内容可能不相关,除了它充满了 bashism 的事实,以及它在 xterm 内或在虚拟控制台上没有错误的事实。

我的.profile样子是这样的(缩写):

case $SHELL in 
*bash*)
    if [ -f $HOME/.bashrc -a -r $HOME/.bashrc ]; then
        . $HOME/.bashrc
    fi
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

如果我尝试通过 LightDM 登录 X,它会立即将我注销。我在.xsession-errors与我的 .bashrc 相关的错误看起来像这样(缩写):

/home/mrled/.bashrc: 103: [[: not found
[: 103: Linux: unexpected operator
[: 274: -P :: unexpected operator
/home/mrled/.bashrc: 520: complete: not found
Run Code Online (Sandbox Code Playgroud)

正如我所说,当我从虚拟控制台运行 bash 时,我没有收到这些错误。此外,如果我删除我的 …

bash scripts dash-shell

13
推荐指数
2
解决办法
8593
查看次数

标签 统计

bash ×1

dash-shell ×1

scripts ×1