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行の終わりを使用します。\r
Unix ラインターミネーターと比較して、追加のキャリッジリターン( )があります。これは、スクリプトの実行を求められたときに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
何らかの方法でリテラルキャリッジリターン処理に依存すると、スクリプトは明らかに中断されます。