따라서 기본적으로 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)"