Bash

RAM清理操作無需重新啟動

  • December 11, 2017

假設我在 RAM 中儲存了不同的變數,並在擴展變數和引用文件時對有線結果執行了一些操作,如本例所示

在不重新啟動的情況下,最接近所有“人工”RAM 數據的清理是什麼?

人工是指我手動插入 RAM 的數據,例如聲明一個變數(或者由於我所做的任何操作而輸入的變數)。它是會話不自然產生的任何東西(例如環境變數和繼承的數據)。

假設我在 RAM 中儲存了不同的變數

不,您可能沒有在 RAM 中儲存任何變數。

除非您使用的是/dev/mem(參見mem(4)),這很奇怪並且需要 root 權限。

物理 RAM 由核心管理(僅)。因此,在 RAM 中儲存內容的唯一方法是通過核心程式碼。應用程式碼(甚至是您的Unix shell)在程序中執行,每個程序都有自己的虛擬地址空間並使用虛擬記憶體

虛擬地址空間在程序啟動時在execve(2)時初始化(例如,通過您的 shell)。當程序終止(或被任何成功的程序重新初始化execve)時,它會被銷毀。

在不重新啟動的情況下,最接近所有“人工”RAM 數據的清理是什麼?

當具有這些“變數”(實際上,它們是虛擬地址空間中的位置)的程序終止時,數據就消失了。如果該程序是一個 shell,您只需要終止它(可能使用exitshell builtinkill(1)等),但您不需要重新啟動。

export 要忘記由shell builtin設置的環境變數,請使用unsetshell builtin。另請參閱bash(1)GNU 的文件bash

也許您想使用該batch實用程序,也許這裡有一些文件。也許你只是想執行一個子 shell,或者bash它自己。

也許明確而明智地執行一些bash可能會非常有幫助。您是否嘗試bash在膩子會話中執行?你可以有幾個嵌套的 shell,你甚至可以在你的 putty 會話中執行一些其他fish的 shell,例如,…。

您應該考慮閱讀有關 Linux 程式的更多資訊(也許是舊的ALP;另請參見intro(2))。您可能想閱讀有關作業系統的更多資訊,例如作業系統:三個簡單的部分

請注意,shell 的狀態不是 持久的。當然,像這樣的啟動文件$HOME/.bashrc包含在每個互動式 shell 啟動時執行的命令(因此您可以將“永久”設置作為命令放在該$HOME/.bashrc文件中)。export

Unix shell 是普通程序(您可以使用chsh(1)更改您的登錄 shell ;您可能需要在 中列出您的新 shell /etc/shells,請參閱shells(5))。如果您不滿意,bash您可以使用另一個 shell(例如zshfish等),並且您可以編寫自己的 shell(可能使用一些編譯語言,如 Rust、C++、Ocaml、C、Go,… .)。你的 shell 應該只是一些ELF執行檔。

(實際上編寫自己的shell是一個非常有用的練習,會幫助你理解很多東西;或者至少研究一些現有shell的原始碼,它們一般都是免費軟體,可能小到sash

您還可以考慮將您的命令分組到一些shell script中,並從您的 putty 會話(這可能是一個互動式的bash)中執行該腳本。

引用自:https://unix.stackexchange.com/questions/410154