쉘 에코 내장이 호출되어 프로세스 목록에 표시되지 않도록 하려면 어떻게 해야 합니까?

쉘 에코 내장이 호출되어 프로세스 목록에 표시되지 않도록 하려면 어떻게 해야 합니까?

명령줄이나 쉘 스크립트에서 다음 줄을 실행하면 프로세스 목록에 표시됩니까?

bash -c "echo $password"

또는

echo $passwordbash 또는 bash 쉘 스크립트의 명령줄에서 실행 하면 됩니다.

이 가시성을 확인하기 위해 수행할 수 있는 테스트가 있습니까? 방금 시도했는데 나열된 프로세스 중에서 볼 수 없습니다.ps -ef | grep testscript

테스트 스크립트:

i=0
while (( i < 100 ))
do
((i=i+1))
sleep 1
echo $$
echo hello
uname
done

답변1

내장 함수를 사용하도록 강제하면 됩니다.

builtin echo foo

echo내장되어 있지 않으면 실패합니다 .

답변2

내장 ps함수는 자체 명령줄이 있는 별도의 프로그램이 아니기 때문에 내장 함수에 대한 인수는 어떤 출력에도 나타나지 않습니다. 모든 bash 버전을 포함하여 모든 최신 셸(BusyBox의 일부 매우 간소화된 구성 제외)에는 이 기능이 echo내장되어 있습니다.

전화를 걸면 bash -c "echo $password"비밀번호가 실행하는 명령에 포함되어 있으므로 모든 사람이 볼 수 있습니다 bash. 단순히 명령을 호출하기 위해 셸을 호출하는 것은 echo의미가 없으므로 그렇게 하지 않기를 바랍니다.

비밀번호를 다른 프로세스에 전달해야 하는 경우 비밀번호를 환경 변수에 넣을 수 있습니다. 명령줄 매개변수와 달리환경 변수는 다른 사용자에게 노출되지 않습니다.Linux 및 대부분의 다른 유니스에서.

관련 정보