명령줄이나 쉘 스크립트에서 다음 줄을 실행하면 프로세스 목록에 표시됩니까?
bash -c "echo $password"
또는
echo $password
bash 또는 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 및 대부분의 다른 유니스에서.