首頁  >  問答  >  主體

在 github Codespace 中使用 execSync 執行時間找不到指令

我正在使用 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粉306523969P粉306523969213 天前363

全部回覆(1)我來回復

  • P粉579008412

    P粉5790084122024-03-21 09:27:32

    雖然您在 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(登入) 設定檔開啟一個新終端。

    回覆
    0
  • 取消回覆