서버 어디에서나 쉘 스크립트를 실행하려면 어떻게 해야 합니까?

서버 어디에서나 쉘 스크립트를 실행하려면 어떻게 해야 합니까?

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

관련 정보