
我想在 tcsh 腳本中取得一個檔案。在程式碼中:
#!/bin/tcsh
unsetenv LD_LIBRARY_PATH
source $1
echo $LD_LIBRARY_PATH > temp_file
預期結果:腳本使用source指令設定的環境變數將會列印到臨時檔案。
實際結果:來源檔案運作良好,但LD_LIBRARY_PATH
變數仍為空。
關於如何讓它發揮作用有什麼想法嗎?
聚苯乙烯 tcsh
當然不是我選擇的 shell,但我有一個正在工作的腳本,它設定了許多環境變量,tcsh
我想在bash
.我認為最簡單的方法(除了tcsh
每次都重寫 shell 之外)是獲取它,將變數列印到檔案中,然後使用一些 shell 魔法,將所有內容重新返回到 bash 中。
答案1
我在 OpenBSD 上嘗試使用 csh 。我想我的例子也適用於 tcsh。
文件測試.csh:
#!/bin/csh
source data.csh
echo $VARIABLE
文件資料.csh
#!/bin/csh
setenv VARIABLE 1234
結果:
$ csh test.csh
1234
答案2
為了進一步參考,這確實有效,但不應該使用 shebang 到 tcsh 路徑:
#!/bin/tcsh
而是使用「env」的路徑:
#!/usr/bin/env tcsh
以允許在不同路徑中安裝 tcsh 的系統上的彈性。例如,如果“tcsh”安裝在“/usr/bin/tcsh”中,則前者將失敗,而後者仍然可以工作。