Windows Subsystem for Linux で sh または bash を使用せずにシェル スクリプトを実行するにはどうすればよいでしょうか?

Windows Subsystem for Linux で sh または bash を使用せずにシェル スクリプトを実行するにはどうすればよいでしょうか?

私は WSL (Windows Subsystem for Linux) を使用して Ubuntu を実行しています。以下に簡単なシェル スクリプトを作成しました。実行すると、以下のエラーが発生します。

#! /bin/sh
# "test script"
echo "hello world"

test.sh: コマンドが見つかりません

しかし、using コマンドsh test.shまたはを実行すると正常に実行されますbash test.sh

shでは、ネイティブ Linux を使用せずに実行する方法はありますか?

答え1

いつでも として実行できます./test.sh

./で終わる現在のディレクトリに解決される/ため、スクリプトへの完全なパスを効果的に提供していることになります。

test.sh現在のディレクトリが にある場合にのみ機能します。$PATHこれは WSL に限定されません。

答え2

基本:

初め:
最初の行に「shebang」を含むスクリプトを作成します。これにより、テキスト ファイルの残りの部分を理解するのが bash、python、perl のどれであるかが定義されます。

これは通常、次のような形式になります: または#!/bin/bash#!/bin/env python

2番目:
ファイルに、および/または (詳細については)xを選択するための-フラグがあることを確認してください。例:usergroupothersman chmod
chmod 755 script_filename

三番目:
ハードディスク上のフォルダー (ディレクトリ)、または永続的にマウントされたストレージ メディアに配置します。個人的なものの場合は、
ここがmkdir -p $HOME/bin/よいアイデアかもしれません。

第4:
フォルダがecho $PATH- に記載されていることを確認してください。たとえば、次の行を追加します
export PATH=$PATH:/absolute/path/to/folder/
$HOME/.bash_aliases

これらをすべて整えると、スクリプトはアクセス可能(実行可能)になります -新しく起動したシェルで(#4 を有効にするため)- bash プロンプトで名前を入力するだけです。
(注: WSL は少なくとも最初のバージョンでは Canonical の Ubuntu でした)


もっと詳しく:https://tldp.org/guides.html- Bashガイド

関連情報