シェルスクリプトが見つかりません[閉じる]

シェルスクリプトが見つかりません[閉じる]

Ubuntuでシェルスクリプトを使用する際に問題があります。

私のスクリプト:

#!/bin/bash
/usr/local/bin/node ./index.js
exec bash

実行ファイルに設定しました。

sudo chmod +x ./index.sh

次に実行します。

sudo ./index.sh

しかし、以下を得る:

sudo: unable to execute ./index.sh: No such file or directory

ただし、ファイルは次のようになります。

$ ls -la 
-rwxr-xr-x   1 root root    54 oct.   4 10:05 index.sh

答え1

このスクリプトはWindowsコンピュータで編集されました。 Windowsのエディタは通常DOS行の終わりを使用します。\rUnix ラインターミネーターと比較して、追加のキャリッジリターン( )があります。これは、スクリプトの実行を求められたときにsudoカーネルを混乱させます。

スクリプトを変更するには、dos2unixスクリプトを実行してください。

または、\rスクリプトのすべての内容を削除します。

$ tr -d '\r' <index.sh >index.sh-new
$ # test index.sh-new to make sure it works
$ mv index.sh-new index.sh

何らかの方法でリテラルキャリッジリターン処理に依存すると、スクリプトは明らかに中断されます。

関連情報