2

Скажем, я запускаю bash как root, и я хочу, чтобы chown домашний каталог пользователя ada. Скажем также, что ada хранится в переменной под названием $USER (потому что я делаю это из скрипта).объединение расширения тильды с переменной заменой в bash

Когда я попытался следующее,

chown -R $USER:$USER ~$USER 

оболочка выполнена тильды во-первых, поэтому он пытался Chown /home/root/ada, а не /home/ada.

Есть ли способ сделать это с помощью вложенных подстановок и правильного экранирования?

ответ

3

Расширение Тильды сложное и не работает с такими переменными.

Один из способов заключается в использовании eval:

chown -R $USER:$USER $(eval echo ~"$USER") 

Но убедитесь, что ваш USER переменная не приходит из ненадежных источников.