別のディレクトリでスクリプトを実行する方法は?


51

私はこれを試しました

./home/user/scripts/someScript

しかし、それは動作しません

そのようなファイル、又はディレクトリはありません

何か案は?


2
明らかに、そのようなファイルやディレクトリはありません。したがって、間違ったパスを指定します。そこにあるドットは「実行」を意味するものではありません。これは単なるパスの一部です。シェルでは、通常、実行するファイルまたはコマンド(実際にはファイルでもあります)のいずれかを入力します:)
Pithikos

その開始期間を取り除き、再試行してください。または、〜/ scripts / someScriptも機能します。'' qoutesも念頭に置いて、execプログラム($ man exec)
j0h 14

回答:


61

コマンドの先頭のドットは、「現在のディレクトリに相対的」を意味します。削除すると、「someScriptディレクトリ内のファイル/home/user/scripts

/home/user/scripts/someScript

「Permission denied」と表示される場合は、他のユーザーのディレクトリにあるファイルにアクセスするための十分なアクセス許可がないか、ファイルが実行可能でないためです。実行可能にするには、次を実行します。

chmod +x /home/user/scripts/someScript

35

スクリプトが実行されているのと同じフォルダー内のリソースにアクセスする必要があり、相対パスとして指定されている場合、スクリプトは中断します。

cd $(dirname $0)スクリプトの先頭に常にa を追加して、スクリプトを含むフォルダーがルートフォルダーになるようにします。


6

削除する .

scrip実行可能ファイルを作成しchmod 755 <nameofscript>て実行する場合、スクリプトへのパスを入力するだけです。

./script使用されていることがわかると、実行しているのと同じディレクトリにスクリプトがあることをシェルに伝えます。フルパスを使用するには、と入力しsh /home/user/scripts/someScriptます。


sh /path/to/fileとは異なり/path/to/fileます。sh/bin/shシンボリックリンクされた実行/bin/dash
レーケンシュタイン

ネット上で見た例で何かを明確にするだけで、通常はsh ./somescript「sh / path / to / script / scriptitself」と入力することもできます。
ブルーノペレイラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.