サーバーのどこからでもシェルスクリプトを実行するにはどうすればよいですか?

サーバーのどこからでもシェルスクリプトを実行するにはどうすればよいですか?

したがって、デフォルトではJSアプリケーションがあります/var/lib/app/。このノードアプリケーションを起動するには、startapp.shディレクトリ内で起動スクリプトを実行します。これで起動時に起動する必要があるため、Ubuntuサーバーに起動タスクを作成し、起動時にトリガーする/etc/init絶対パスを提供しました。startapp.sh

ただし、トリガーされたスクリプトを実行しようとするたびに起動するには、startup.shディレクトリ内のアクティベーションファイルに依存するため起動しません/var/lib/app/。パスをエクスポートしましたが、Ubuntuサーバーのディレクトリ以外の場所では.bashrcまだジョブを実行できません。/var/lib/app/

サーバーのどこからでもシェルスクリプトを実行するにはどうすればよいですか?

答え1

/var/lib/app/PATHではなくPATHにディレクトリを追加する必要があります/var/lib/app/startapp.sh

これを行う永久的なまず、次のコマンドを入力してPATH環境変数を確認します。

echo $PATH

得られる結果は次のようになります。

/usr/local/bin:/bin:/usr/bin/:usr/local/sbin:/usr/sbin/ ...

順序を変更しないでください。エクスポートするときは、以下をPATH="$PATH:/..."使用する必要があります。追加表示されたばかりの古い元のルートへの新しいルートです。

または、目的のエディタで開き.bashrc~/.profileOSXで呼び出されると仮定)、次の行を追加します。vi

export PATH="$PATH:/your/absolute/path"

あなたはあなたを追加する必要があります純粋なPathは、アプリケーションが配置されているディレクトリを意味するため、そのアプリケーションのファイル名を入力すると、そのアプリケーションが実行されます。たとえば、と入力するとディレクトリpwdから実行されます/bin/。 PATH環境変数でこれを見ることができます。したがって、スクリプトはです/bin/pwd。これを見るにはwhich pwdbashに入力してください。あなたの絶対パスは/var/lib/app/その下にディレクトリがなく、あなたのアプリケーションがそこにある場合だと思います。

正しく実行するとうまくいきますが、そうでない場合は、最も簡単な方法/var/lib/app/はで作成したアプリケーションを変換することです/bin/

$ cd /var/lib/app/
$ mv * /bin

答え2

実行可能ファイルが保存されているファイルからデータを読み取るには、次のようにします。

#!/bin/bash

old_dir="$(pwd)"
cd "$(dirname "$0")"
this_dir="$(pwd)"
cd "${old_dir}"
unset old_dir

# read from where executable is stored
echo "${this_dir}/data"
# read for present working directory
echo "$(pwd)"

関連情報