在 github Codespace 中使用 execSync 執行時間找不到指令
P粉306523969
P粉306523969 2024-03-20 11:52:18
0
1
441

我正在使用 github 程式碼空間來測試 Discord.js 機器人。在其中我使用指令fortune | owsay 使用了fortunecowsay 指令,fortune 指令使用sudo apt install Fortune-mod 安裝, cowsay 使用<代码>sudo apt安裝cowsay。他們的安裝目錄位於“/usr/games”而不是“/bin”下,因此當我運行命令 fortune |牛說我明白了

bash: fortune: command not found
bash: cowsay: command not found

這是因為在 Github 程式碼空間中 /usr/games 不在 $PATH 中

當我將“/usr/games”新增至“/etc/profile”和“~/.profile”中的路徑時,請使用 export PATH="/usr/games:$PATH"放在兩個檔案的底部,然後使用命令「source /etc/profile」並在稍後測試「source ~/.profile」這些命令有效...但當我嘗試使用VScode 的內建運行程序(按f5 並單擊node.js)運行該文件時,它會自動創建一個新shell 並使用node 來運行它命令未找到的文件。

我想知道 GitHub codespaces 如何在沒有我新增的新路徑的情況下建立新的 shell。以及如何將 /usr/games 目錄新增至 vscode 運行檔案時開啟的新 shell 的路徑

P粉306523969
P粉306523969

全部回覆(1)
P粉579008412

雖然您在 Github Codespace 中使用的 shell 是互動式的,但它們不是登入 shell。只有登入 shell 才會執行 /etc/profile~/.profile 檔案。

您可以透過執行以下命令來測試 shell 是否為登入 shell:

shopt -q login_shell && echo 'login shell' || echo 'not login shell'

您可以:

  1. .bashrc檔案等設定PATH;互動式非登入檔案將執行此檔案。儘管我認為在 .profile 以外的檔案中設定 PATH 並不是最佳實踐。
  2. 透過終端連接到 Codespace 後,執行 bash -l 以啟動一個新 shell 作為登入 shell。
  3. 在遠端.vscode-remote settings.json 檔案中建立新的終端設定檔- 前往SettingsRemote [ Codespaces] ,點擊Edit in settings.json按鈕應該可以到達這裡,然後將新的設定檔新增到terminal.integrated.profiles.linux...
"terminal.integrated.profiles.linux": {

        "bash (login)": {
            "path": "bash",
            "args": ["-l"],
            "icon": "terminal-bash"
        },
        …
    }

然後在 VS Code 中使用 bash(登入) 設定檔開啟一個新終端。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板