【问题标题】:Why am I getting an error when I use `uname` in my .bashrc?为什么我在 .bashrc 中使用 `uname` 时会出现错误?
【发布时间】:2012-06-05 02:37:20
【问题描述】:

在我的 .bashrc 中,我有以下代码

if [`uname` == "Linux"]; then
    echo "It worked"
else
    echo "It didn't work"
fi

但是当我获取我的 .bashrc 时,我得到以下结果

[Linux:找不到命令

没用

奇怪的是,[ 不是错字,它是错误的一部分。如果我注释掉 if 语句,那么错误就会消失,所以我很确定它是错误的根源。另外,如果我将Linux 更改为linux,则错误也会更改为小写。

如果我回显 uname,我会得到 Linux。

为了获取我的 .bashrc,我使用了 source .bashrc,并且还通过在命令行终端上输入 bash 开始了一个新的 bash 会话。

我认为检查操作系统类型并不难,但我似乎无法找出 .bashrc 的正确语法。

我看不出我做错了什么,有人可以帮忙吗?

【问题讨论】:

    标签: linux bash uname


    【解决方案1】:

    您忘记了方括号后面的空格。第一行必须如下所示:

    if [ `uname` == "Linux" ]; then
    

    在您的版本中,没有空格,[uname 的输出被连接成一个名为[Linux 的可执行文件,该文件不存在于PATH 中。

    【讨论】:

    • 愚蠢的我。谢谢,我应该已经明白了。
    • +1 用于回答 OP 的隐含问题“为什么”,而不仅仅是显示正确的语法。我唯一要改变的是 Bash 并不是说​​[Linux 不存在;这是说在PATH中找不到它。细微的区别,但可能对 OP 以外的人很重要。
    • @Florian - P.S.谢谢你对你的回答很好。我在许多论坛上发现,当我们犯愚蠢的错误时,人们会对像我这样的初学者非常刻薄。
    【解决方案2】:

    对间距很挑剔。您的条件中需要空格

    if [ `uname` == "Linux" ]; then
        echo "It worked"
    else
        echo "It didn't work"
    fi
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-19
      • 2011-12-23
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多