私は 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
ディレクトリを追加する方法
Github Codespace で使用するシェルは対話型ですが、ログイン シェルではありません。ログイン シェルのみが
/etc/profile
および~/.profile
ファイルを実行します。次のコマンドを実行すると、シェルがログイン シェルかどうかをテストできます。
shopt -q login_shell && echo 'ログインシェル' || echo 'ログインシェルではありません' .bashrcファイルなどに- PATH
を実行して、ログイン シェルとして新しいシェルを起動します。 -
- settings.json
"terminal.integrated.profiles.linux": { "bash (ログイン)": { "パス": "バッシュ", "引数": ["-l"], "アイコン": "ターミナルbash" }、 ... }
次に、 プロファイルを使用して、VS Code で新しいターミナルを開きます。を設定します。対話型の非ログイン ファイルはこのファイルを実行します。ただし、
.profile以外のファイルに
PATHを設定することはベストプラクティスではないと思います。
ターミナル経由で Codespace に接続した後、
bash -lリモートの
.vscode-remoteファイルに新しい端末プロファイルを作成します -
Settingsおよび
Remote [Codespaces]、[
edit in settings.json] ボタンをクリックするとここに移動し、新しいプロファイルを
terminal.integrated.profiles.linux...
に追加します。