我想將csh腳本轉換爲在linux modules功能中使用的tcl腳本。 csh腳本最初用於爲軟件包正確設置環境變量。我不想讓終端用戶改變他的shell並在每次他/她希望使用該軟件時運行3條命令,而是希望創建一個簡單的獨立於shell的簡單命令,並適當地設置它們的環境。因此,使用模塊文件似乎是完成此任務的完美方式。使用模塊設置coredumpsize的限制
當我嘗試對coredumpsize設置限制時出現問題,因爲似乎沒有任何方法可以在模塊內設置此值。原始的csh命令看起來像這樣,limit coredumpsize 0
。我明白原來的bash命令行相當於ulimit -c 0
。 注意:這兩個命令都假定我想在使用此軟件時禁用coredumpfiles。
我的模塊文件代碼嘗試以依賴於shell的方式調用此命令,b/c似乎不是模塊文件原生的「限制」命令。
set shell [module-info shell]
if { $shell=="bash"} {
set XARCH amd64
[exec /bin/bash -c "ulimit -c 0"]
} elseif {$shell=="tcsh"} {
set XARCH linux
[exec /bin/tcsh -c "limit coredumpsize 0"]
根據我的網絡廣泛的研究,我無法找到一個環境變量,我可以修改,但RLIMIT_CORE看起來可能是接近我要找的。我現在的代碼存在的問題是,exec命令產生一個$ shell進程並運行一個命令,而不是在調用了tcl模塊進程的shell上運行limit命令。
任何幫助都可以通過一種簡單的方式更改環境變量並設置coredumpsize的限制,最理想的是使用模塊。
我會將該csh腳本轉換爲Posix'sh'(或bash'),或者甚至考慮使用[GNU guile](http://www.gnu.org/software/guile/),它是比Tcl更強大(和恕我直言,更性感)。 –
如何轉換腳本幫助?你是否建議我爲bash用戶製作免費腳本並讓他們運行它?這對我們的實例並不完全有幫助,因爲我也試圖減輕用戶在每次運行軟件時不得不輸入3-4個額外的命令。我也試圖避免讓最終用戶總是編輯他們的一般環境(他/她們可以將環境變量更改添加到他們的.bashrc文件中) – twinoza