私は 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
を選択するための-フラグがあることを確認してください。例:user
group
others
man 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ガイド