2012-04-02 74 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