为什么“less”仅显示我的标题脚本的输出而不是文件内容?

为什么“less”仅显示我的标题脚本的输出而不是文件内容?

我在用着韓軟體作为我的终端,我有一个脚本,当我更改目录时运行,用当前目录替换窗口标题。我最初让它在我的.cshrc文件,以便它将在新的 shell 中更改窗口标题。

当我less在控制台中查看文本文件时,我会看到此脚本的输出,而不是文件内容。这实际上毫无用处less

答案1

您的问题是由于文件~/.cshrc输出到控制台的内容干扰了 的操作而引起的less

cd解决此问题的一种方法是在执行影响控制台或改变 shell 脚本运行方式的任何操作(例如,设置别名)之前检查交互式 shell 。

if ($?prompt) then
    # Do things that affect interactive shells here
endif

答案2

根据此常见问题解答对于开发人员主页上的 Less,事实证明,文件中任何生成控制台输出的内容(我的窗口标题脚本就是这样做的).cshrc都会干扰 的输出less。显然less会调用 shell 来打开和查看文件,并且由于 shell 的任何新实例都会自动执行 中的命令.cshrc,因此在该步骤发生的任何控制台输出都会干扰该工具的操作。

解决方案是从文件中删除对我的脚本的调用.cshrc。我可以将其放入文件中.login,但需要注意的是,任何对 shell 的新调用都不会重新执行该文件中的命令。

相关内容