Как убедиться, что встроенное эхо-сообщение оболочки вызвано так, что оно не отображается в списке процессов?

Будет ли это видно в списке процессов, если строка ниже выполняется из командной строки или сценария оболочки

bash -c "echo $password" 

или

мне просто нужно сделать echo $password из bash в командной строке или внутри сценария оболочки bash

есть ли какой-либо тест, который я могу сделать, чтобы проверить такую ​​видимость. Я просто пытался это сделать, но я не смог увидеть его в списке процессов с ps -ef | grep testscript ps -ef | grep testscript

testscript:

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

Просто заставьте его использовать встроенный:

 builtin echo foo 

Если echo не встроено, это не удастся.

Аргументы для встроенного устройства никогда не будут отображаться в любом выпуске ps , потому что встроенное приложение не является отдельной программой со своей собственной командной строкой. Все современные оболочки (за исключением некоторых сильно урезанных конфигураций BusyBox), включая все версии bash, имеют встроенное echo .

Обратите внимание, что если вы вызываете bash -c "echo $password" , тогда пароль будет отображаться для всех, чтобы увидеть, потому что он встроен в команду, которую вы запускаете с помощью bash . Вызов оболочки просто для вызова ее команды echo бессмыслен, поэтому, надеюсь, вы этого не делаете.

Можно ввести пароль в переменную среды, если вам нужно передать его другому процессу. В отличие от аргументов командной строки, переменные среды не подвергаются другим пользователям под Linux и большинством других устройств.