シェル スクリプトで cd が機能しないのはなぜですか?

シェル スクリプトで cd が機能しないのはなぜですか?

解決済み

Linux Amazon-EC2 サーバーで Minecraft サーバーを起動するシェル スクリプトを作成しようとしていますが、サーバーの実行ファイルがあるディレクトリに変更しようとすると、cd コマンドでディレクトリまたはファイルが見つからないというメッセージが表示されます。シェル スクリプトの経験はほとんどありません。このファイルが保存されているフォルダーの権限に関係があるのでしょうか、それともファイル自体に関係があるのでしょうか。ファイルの名前は「startServer」です。

#!/bin/bash
cd /home/ec2-user/Minecraft
java -Xmx2048M -Xms2048M -jar minecraft_server.jar nogui

*ファイル拡張子を付けて保存しませんでした。拡張子を付けたほうがよいでしょうか? 付ける必要はありますか?

答え1

スクリプトを実行可能にするには、スクリプトの権限を変更して実行可能にする必要があります。

LinuxまたはUNIXで権限を変更するコマンドはchmod です。

chmod +x ./name_of_your_script

現在のユーザーにスクリプトを実行する権限を付与します。

スクリプトの先頭の #! は、対話型シェルにスクリプトが /bin/bash によって解釈されることを示します。そのため、ファイル名に拡張子を追加する必要はありません。ただし、シェル スクリプトに .sh を追加するのが一般的な慣例です。

答え2

エラーメッセージは正確には何ですか? 私の推測では、次のようになります:

cd: /Minecraft: No such file or directory

これは、HOME が未定義で、~ が空の文字列に展開される場合に発生します。

答え3

スクリプトを実行するには実行権限が必要です。これを行うには、保存されているディレクトリに cd して、次のコマンドを使用します。

chmod u+rwx startServer 

ただし、これは問題ではないと思います。cd を使用するのではなく、minecraft_server.jar ファイルへのフル パスを使用してみてください。

#!/bin/bash
java -Xmx2048M -Xms2048M -jar /full/path/to/Minecraft/minecraft_server.jar nogui

関連情報