Кажется, они оба работают:
bash <(echo 'echo "first: $1 second: $2"') '111' '222'
и
bash -s '111' '222' < <(echo 'echo "first: $1 second: $2"')
похоже на первый, bash читает из файлового дескриптора с первого аргумента, во втором читает со стандартного ввода.
Проблема в том, что ~является подстановочным знаком, а bash обычно расширяет все подстановочные знаки и выполняет раскрытие переменных ДО выполнения команды. Но в вашем случае вы используете квоты, и это препятствует разрешению подстановочных знаков bash, поэтому
export PEM_FILE="~/.ssh/xxx.pem"
PEM _FILE будет содержать не путь к файлу, а строку. И команда chmod получит эту строку в качестве аргумента, опять же без выполнения разрешения подстановочного знака.
Так что просто уберите квоту
export PEM_FILE=~/.ssh/xxx.pem
или используйте полный путь
export PEM_FILE="/home/username/.ssh/xxx.pem"
Оба будут работать.