したがって、デフォルトでは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
(~/.profile
OSXで呼び出されると仮定)、次の行を追加します。vi
export PATH="$PATH:/your/absolute/path"
あなたはあなたを追加する必要があります純粋なPathは、アプリケーションが配置されているディレクトリを意味するため、そのアプリケーションのファイル名を入力すると、そのアプリケーションが実行されます。たとえば、と入力するとディレクトリpwd
から実行されます/bin/
。 PATH環境変数でこれを見ることができます。したがって、スクリプトはです/bin/pwd
。これを見るにはwhich pwd
bashに入力してください。あなたの絶対パスは/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)"