web-dev-qa-db-ja.com

Red Hatで.shファイルを実行するには?

.shを使用してRedhatで./test.shファイルを実行しようとしたとき

次のようなエラーが発生します

[test@tester unix_scripts]$ ./test.sh
: No such file or directory
[test@tester unix_scripts]$ 

また、chmod 777 test.shを使用してファイルの権限を設定しました

それでも同じエラー

誰かが私を助けてくれますか?

2
Charly

実際に問題となったのは、使用したスクリプトがdosで作成されたため、dos2unixコマンドを使用してスクリプトをunixに変換しました。貴重なご協力をありがとうございました。

6
Charly

スクリプトの最初の行に置くのを忘れているかもしれません:

#!/bin/bash

例えば:

#!/bin/bash          
echo Hello World  

上記のhelloworldの例のような単純なシェルスクリプトを試してみたら?それは機能しますか?

ちなみに、SELinuxコンテキストについてはよろしいですか?
何を言いますか:getenforceは言いますか?
機能:ls -l test.sh いう?

私の最善のアドバイスは、最初に非常に単純なスクリプトを試して、すべての環境とコンテキストの動作を確認できるようにすることです。

4
Xinity

正しいディレクトリにいて(「ls」と入力するとディレクトリの内容を確認できます)、ファイル名が「test.sh」であることを再確認してください。あなたも試してみたいかもしれません:

[test@tester unix_scripts]$ sh test.sh
2
TrueDuality

getenforceをお試しください。がenforcingを返す場合、selinuxはオンになっており、スクリプトを実行するには別のコンテキストにする必要がある場合があります。

getenforceが強制を返す場合は、dmesg、/ var/log/message /var/log/audit/audit.log、またはselinuxがホストにログオンする場所をチェックして、正確な問題を見つけてください。

または、実行中の別のスクリプトと同じコンテキストにスクリプトをchconしてみてください。

ファイルのコンテキストを表示するには、ls -lZを使用します。

または試してみてください

chcon --reference=/script/that/will/work /script/that/wont/work

たぶんchconのmanページをチェックしてください。-reference構文については100%確信が持てません。

0
Jason Tan

スクリプトにハッシュバンを置いても、スクリプトの実行に必要なものは変わりません。実行可能に設定して(chmod + x test.sh)、実行する(./test.sh)か、シェルの引数として呼び出す(sh test.sh)必要があります。

$ PATH変数(〜/ bin /、/ usr/local/bin /など)から任意の場所にスクリプトを配置することもできます。スクリプトが実行可能であれば、その場所(test.sh)を参照せずにどこからでも実行できます。 。

シェルの引数なしでスクリプトを実行すると、デフォルトで、現在使用しているシェルで実行されます。 それは、ハッシュバングが重要になる場所です...ユーザーがtcshやkshなどを使用している場合でも、それがbashスクリプトとして実行されるようにしたい場合は、#!/ bin /スクリプトの最初の行としてbash。

0
Brad Beyenhof

Test.shはunix_scriptsディレクトリにありますか?

存在しないtest.shで参照されているファイルまたはディレクトリはありますか?エラーは、スクリプトの実行からではなく、スクリプト内から発生した可能性があるためです...

0
Milner

はい、#である必要があります! (クラッシュバン!):)

スクリプトが置かれているディレクトリで実行された次のコマンドの結果を投稿できますか?

ls -l
cat test.sh
0
Andrew

shまたはbashを使用していますか? (つまり、スクリプトの最初の行は何ですか?)

#!/ bin/shを使用している場合は、/ bin/shが存在することを確認する必要があります(typewhich sh

/ bin/shがインストールされていない場合は、#!/ bin/bashまたは別のシェルを試す必要がある場合があります。

0
Brent