検索

ホームページ  >  に質問  >  本文

github コードスペースで execSync を使用して実行するとコマンドが見つかりません

私は github コードスペースを使用して Discord.js ボットをテストしています。その中で、コマンド fortune | owsay を使用し、fortune および cowsay コマンドを使用しました。fortune コマンドは、sudo apt install Fortune- を使用してインストールされました。 mod.cowsay <代码>sudo apt を使用して Cowsay をインストールします。インストール ディレクトリは "/bin" ではなく "/usr/games" の下にあるので、コマンドを実行すると fortune |Niu は I 理解しました

bash: フォーチュン: コマンドが見つかりません
bash: カウセイ: コマンドが見つかりません

これは、/usr/games が Github コード スペースの $PATH にないためです

「/etc/profile」と「~/.profile」のパスに「/usr/games」を追加する場合は、次のようにします。 export PATH="/usr/games:$PATH"両方のファイルの最後に配置し、コマンド「source /etc/profile」を使用し、後で「source ~/.profile」をテストします。これらのコマンドは機能します。 ...しかし、VScode の組み込みランナー (f5 キーを押して、node.js をクリック) を使用してファイルを実行しようとすると、自動的に新しいシェルが作成され、コマンドで見つからないファイルを実行するためにノードが使用されます。

追加した新しいパスを使用せずに、GitHub コードスペースがどのようにして新しいシェルを作成できるのか疑問に思っています。そして、vscode がファイルを実行するときに開く新しいシェルのパスに /usr/games ディレクトリを追加する方法

P粉306523969P粉306523969290日前452

全員に返信(1)返信します

  • P粉579008412

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

    Github Codespace で使用するシェルは対話型ですが、ログイン シェルではありません。ログイン シェルのみが /etc/profile および ~/.profile ファイルを実行します。

    次のコマンドを実行すると、シェルがログイン シェルかどうかをテストできます。

    shopt -q login_shell && echo 'ログインシェル' || echo 'ログインシェルではありません'
    ###あなたはできる:###
    

    .bashrc
      ファイルなどに
    1. PATH を設定します。対話型の非ログイン ファイルはこのファイルを実行します。ただし、.profile 以外のファイルに PATH を設定することはベストプラクティスではないと思います。 ターミナル経由で Codespace に接続した後、bash -l
    2. を実行して、ログイン シェルとして新しいシェルを起動します。
    3. リモートの .vscode-remote
    4. settings.json ファイルに新しい端末プロファイルを作成します - Settings および Remote [Codespaces] 、[edit in settings.json] ボタンをクリックするとここに移動し、新しいプロファイルを terminal.integrated.profiles.linux... に追加します。 "terminal.integrated.profiles.linux": { "bash (ログイン)": { "パス": "バッシュ", "引数": ["-l"], "アイコン": "ターミナルbash" }、 ... }
    次に、
    bash (ログイン) 
    プロファイルを使用して、VS Code で新しいターミナルを開きます。

    返事
    0
  • キャンセル返事