2012-04-02 70 views
0

我试图在shell脚本中获取命令历史记录。它不工作,除非我拿出#!/ bin/bash在shell脚本中使用历史命令

任何线索我如何得到它的工作,或达到相同的效果,而不删除#!/ bin/bash?

任何人都知道它为什么会删除#!/ bin/bash?

+2

您可以先向我们展示您迄今为止所做的工作。 – 2012-04-02 01:54:53

回答

5

当你取出shebang线时,它将由当前shell运行。除非您使用“交互式”外壳,否则Bash不会有任何历史记录。试着改变你的家当行:

#!/bin/bash -i 

这将导致bash启动一个交互的shell。

+0

有趣。我的解决方案最终是使用source命令运行脚本。使用#!/ bin/bash -i和从源代码运行脚本有什么区别? – MVTC 2012-04-02 03:47:24

+0

@MVTCplusplus当您输入脚本时,它将在当前shell的上下文中运行。任何分配/更改的变量,函数等都将在您运行它的shell中显示(包括您可能使用history命令对shell的历史进行的任何更改)。当您启动一个新的交互式shell时,这些更改将保持在运行脚本的shell的本地。至于你想要哪一个,这取决于你的脚本应该做什么。但是,采购脚本也是一个合理的解决方案。 – FatalError 2012-04-02 14:05:40