Почему я не могу использовать переменную окружения с командой chmod?

Кажется, они оба работают:

bash <(echo 'echo "first: $1 second: $2"') '111' '222'

и

bash -s '111' '222' < <(echo 'echo "first: $1 second: $2"')

похоже на первый, bash читает из файлового дескриптора с первого аргумента, во втором читает со стандартного ввода.

0
11.11.2021, 22:40
1 ответ

Проблема в том, что ~является подстановочным знаком, а 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"

Оба будут работать.

0
12.11.2021, 10:44

Теги

Похожие вопросы