我有一個 bash 腳本,它運行一個生成文件的程式(到運行它的當前目錄中),然後 bash 腳本檢查它們及其大小。
當我從終端機運行此腳本時,一切正常,文件被建立、找到並報告。
問題是這應該是基本的用戶友好的,並且需要可點擊才能運行。該腳本在單擊時運行,但是,文件似乎沒有生成(也許它們在其他地方?),因此報告失敗,因為找不到文件。
在此腳本中,我在呼叫程式之前執行 cd ~/path/to/location 。
#!/usr/bin/env bash
cd ~/path/to/location
./someprogram
if [ touch output.txt ]; then
echo "FILE EXISTS"
fi
答案1
事實證明,我的環境沒有使用 SHEBANG 完全複製
#!usr/bin/env bash
透過簡單地定義和導出腳本中缺少的環境變量,腳本就可以正常工作。
export ENV_VARIABLE_NAME=environment_variable_data
一定是變數沒有在 bash 環境中定義(可能是 cshrc 或其他東西)
答案2
抱歉,我的聲譽顯然不允許我發表評論,儘管這樣更合適,因為我要求你先檢查一些東西。
無論如何,我的問題是:您在使用控制台和 GUI 時是否使用相同的使用者名稱?
使用控制台時,您可能已經以 root 身份登錄,而您的 GUI 將使用另一個用戶名登錄,這可能對您嘗試寫入文件的資料夾沒有所需的權限?
然後,您應該確保已向 GUI 使用者授予所需的權限(例如,將使用者帳戶新增至相關群組)。
這可能是使用 Linux 時檔案未寫入您期望的位置的最常見原因。