sudo su 이후에 .sh 파일에 전달된 매개변수가 손실되는 이유는 무엇입니까?

sudo su 이후에 .sh 파일에 전달된 매개변수가 손실되는 이유는 무엇입니까?

.sh내 로컬 컴퓨터에서 서버의 파일을 실행 해야 합니다 . 다음 명령을 사용하여 이 작업을 수행할 수 있습니다.

ssh -p my_port_no -i path_to_key user@ip_address "bash -s" < testOnServer.sh

이제 위 명령을 사용하여 일부 매개변수를 전달해야 합니다. 아래 방법을 따랐더니 효과가 있었습니다.

ssh -p my_port_no -i path_to_key user@ip_address "bash -s" < testOnServer.sh testArg1

testOnServer.sh파일은 다음과 같습니다.

testArg1=$1

echo testArg1   # testArg1 can be seen here.
sudo su
echo testArg1 # testArg1 is missing here.

명령 testArg1뒤에 값이 누락되었습니다 .sudo su

어떤 도움이라도 대단히 감사하겠습니다.

답변1

sudo su를 사용하여 쉘을 새 사용자인 루트로 변경합니다. 따라서 이러한 변수는 새 셸에서 사용할 수 없습니다.

변수를 공유하려면 루트 액세스를 위해 환경에 변수를 게시해야 합니다. 따라서 testArg1 값은 sudo su 명령 후에 "손실"되지 않습니다. 쉘을 변경할 때 인쇄되지 않습니다.

대신 필요한 경우 사용자가 필요한 명령을 직접 실행할 수 있도록 sudoers 파일을 편집하십시오.

이전 게시물을 참조하세요.Bash 스크립트를 실행할 때 모든 기본 명령을 차단하시겠습니까?, "소스" 등을 사용하여 변수 액세스를 제어하는 ​​방법에 대해 설명합니다. 그리고 Bash 변수 범위에 대한 정보를 읽어보세요. 사용배시 사용자 가이드.

관련 정보