【问题标题】:what does "TERM environment variable not set" mean?“未设置TERM环境变量”是什么意思?
【发布时间】:2012-01-18 04:52:26
【问题描述】:

我正在用 Objective C 编写一个简单的控制台应用程序。

我已尝试 system("clear") 但我在控制台上收到此消息

未设置TERM环境变量。”

谁能解释一下这是怎么回事?

我对 OSX 和 Objective C 都很陌生。 如果这个问题太愚蠢,我很抱歉,因为我没有在 *nix 上编写太多程序。 (我在大学期间做过很多 Java 和 PHP 开发)。

【问题讨论】:

  • 答案将在 C 标准库中找到——这里没有特定于 Objective-C 或 MacOS X 的内容。或者我应该说:Objective-C 或 Cocoa 框架中没有会有所帮助——你需要从 C 和 Unix 中寻找答案。
  • 谢谢,但在我看到的很多 C/Unix 论坛上,我得到了 system("clear"); 作为答案,但我收到了这个错误。错误的含义是我的实际问题。在人们投票否决之前让我编辑问题。

标签: objective-c unix osx-snow-leopard


【解决方案1】:

TERM 环境变量告诉你的程序它运行在什么类型的终端上。每种类型的终端都以自己的方式显示数据和响应命令。例如,VT100 终端的工作方式与 IBM 3270 终端完全不同。

您看到的错误消息表明未设置TERM 环境变量,可能是因为您尝试从Xcode 中启动程序。您可以在 Xcode 4 的方案设置中添加要设置的环境变量。不过,正如 rob mayoff 在下面指出的那样,Xcode 的控制台不是一个合适的终端仿真器,因此尝试在 Xcode 中运行您的程序不会得到您想要的结果。

【讨论】:

  • 但是 Xcode 的控制台并不是真正的终端模拟器。它不处理转义序列,因此设置 TERM 不会让他清除控制台。
  • @robmayoff 好点——更新了我的答案以包含这一事实。
  • 感谢 Rob 和 Caleb。我会投票赞成你的答案。但我没有那些“声誉”点。 :P :)
  • 但是为什么程序需要终端仿真器呢?该终端提供了哪些功能?
  • @MartinKonecny Different terminals 具有不同的功能。比如有的只能显示行字符;其他可以显示在反向字段(背景和前景色切换),粗体,颜色等。有些具有固定的屏幕尺寸,有些可以随时更改。有些可以做图形,有些只能做文字。终端是(基于终端的)程序与用户的连接;如果程序想要利用终端的功能,它需要知道它正在与哪种终端通信。
猜你喜欢
  • 2013-04-20
  • 2017-10-30
  • 2014-02-10
  • 2021-03-31
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 2015-06-18
  • 2013-10-25
相关资源
最近更新 更多