【问题标题】:OSTYPE not available in shell scriptOSTYPE 在 shell 脚本中不可用
【发布时间】:2014-06-18 22:33:21
【问题描述】:

目前我正在使用新的 Xubuntu trusty tahr 设置一个新系统。 我对 shell 脚本不是很熟悉,但我有一个需要 OSTYPE 环境变量来确定要做什么的脚本。

如果我在 xfce 终端中调用 echo $OSTYPE,我会成功获得 linux-gnu

如果我调用以下脚本,我只会得到一个空行。

#!/bin/sh
echo $OSTYPE

是我遗漏了什么还是新 ubuntu 的问题?

在我的另一台机器上,它可以使用该脚本。但是我不知道是否为此进行了某些更改,因为该系统最初不是我的。

【问题讨论】:

  • 通过uname 检索该信息更加便携。例如uname -o

标签: linux shell environment-variables sh ubuntu-14.04


【解决方案1】:

原始 Bourne shell 无法识别 OSTYPE 环境变量,这是脚本第一行调用的内容。

替换为:

#!/bin/bash

#!/bin/ksh

适合您的设置。

【讨论】:

  • 我应该在我的另一台机器上添加它与/bin/sh 一起运行。另一台机器使用的是 Ubuntu 13.10,但可能在我不知情的情况下进行了更改。
  • 最后这是正确方向的提示。在我的工作机器上 /bin/sh 链接到 /bin/bash 。在全新安装中 /bin/sh 链接到 /bin/dash
  • 便携性:#!/usr/bin/env bash
  • ^ 只是一个注释..bash 不是(为了便携性)。由于较新的 ubuntu 使用破折号作为外壳。如果您需要更好的可移植性,请确保其 bourne shell POSIX 兼容。在 bash 中,您可以使用“set -o posix”或使用 --posix 运行脚本来强制遵守。参考 - gnu.org/software/bash/manual/html_node/…
猜你喜欢
  • 2011-11-24
  • 1970-01-01
  • 2017-06-21
  • 2013-12-03
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多