SSH 원격 세션을 사용할 때 bash 구성을 읽는 방법

SSH 원격 세션을 사용할 때 bash 구성을 읽는 방법

내 가상 머신에 배포하려는 Node.js 애플리케이션이 있습니다. 애플리케이션을 시작하기 전에 애플리케이션이 시작되기 전에 읽어야 할 몇 가지 명령을 설정하고 싶습니다.

.bashrc로컬 환경에서와 마찬가지로 이 명령을 내부에 배치했습니다 .

예제 명령은 다음 위치에 있습니다..bashrc

export TOY_DIR=~/work/git/toyPlayer
export TOY_PLAYER_ENV=dev

이제 .을 사용하면 node app.js환경을 찾을 수 없다는 오류가 발생합니다. 그래도 내 로컬 상자에서는 잘 작동합니다.

인터넷 검색 후 이 명령을 시도했습니다.

tmux
node app.js

노드 서버가 정상적으로 시작되지만 이제 tmux 쉘을 종료할 수 없습니다. CTRL+C를 사용하여 종료했지만 노드 서버가 중지되었습니다.

추신: 원격으로 로그인할 수 있고 작동한다는 것을 알고 있습니다. 하지만 저는 명령줄을 사용하여 작업을 수행하는 방법을 배우려고 노력 중입니다.

이를 달성하기 위한 모범 사례는 무엇입니까?

폴리페닐렌 설파이드: 쉘이 SSH에 의해 제어되는지 감지하고 싶지 않습니다. Node 애플리케이션을 시작하기 전에 일부 변수를 내보내고 싶습니다. 이러한 변수는 환경 변수이며 내 애플리케이션에 존재하는 config.js에서 읽습니다.

다음은 환경 변수를 사용하는 방법의 예입니다.

var env = process.env['TOY_PLAYER_ENV']

내 질문은 원격 컴퓨터에서 이러한 변수를 설정하는 방법입니다.

답변1

이미 잘 받아들여지는 답변이 포함된 매우 유사한 질문이 있습니다.쉘이 SSH에 의해 제어되는지 어떻게 감지합니까?

bash 변수 중 하나의 길이가 0이 아닌지 확인하여 bash 변수 중 하나가 설정되어 있는지 SSH_CLIENT확인할 수 있습니다.SSH_TTY

if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
    # do your stuff here
fi

또는 쉘 상위 프로세스의 이름이 다음과 같이 지정되어 있는지 확인할 수 있습니다 sshd.

if [ $(ps -o comm= -p $PPID) = 'sshd' ]; then
    # do your stuff here
fi

관련 정보