다음 스크립트를 작성하려고 합니다.
copy.sh
서버에 파일 복사( 이 작업을 수행하는 스크립트가 이미 있습니다 )- 서버에 SSH로 접속
- 방금 복사한 파일이 있는 디렉터리로 이동합니다.
- 달리기
make
- 생성된 바이너리를
make
다른 위치에 복사합니다.
내 스크립트는 다음과 같습니다
#!/usr/bin/bash
BUILDSERV=me@server
BUILDDIR=/me/directory
#run my script that copies the files
./copy.sh
#TARGET is also a var in copy.sh so I make sure it's set properly here
TARGET=root@final_dest:/usr/bin/my_bin
ssh $BUILDSERV "cd $BUILDDIR && make && scp ./my_bin $TARGET"
문제는 내가 실행하려는 프로그램이 make
내 프로그램에 없다는 것입니다 PATH
. 내 프로그램 .bash_profile
에는 해당 라인이 있지만 export PATH=$PATH:/my/bin/
ssh에 접속할 때 읽혀지지 않는 것 같습니다 bash_profile
.
내 SSH 호출이나 스크립트를 변경하여 내 내용을 읽을 수 있는 방법이 있나요 .bash_profile
?
답변1
다음이 작동합니다.
ssh $BUILDSERV "source ~/.bash_profile && cd $BUILDDIR && make && scp ./my_bin $TARGET"
쉘 source
내장 기능은 동일한 쉘에서 파일을 읽고 명령을 실행합니다(단순히 별도의 쉘을 호출하는 스크립트를 호출하는 것과 반대).
로그인 셸로 호출되면 bash
실행된 것과 정확히 동일한 방식으로 실행되므로(있는 경우) 효과는 동일합니다..bash_profile
source