Как получить обычное имя пользователя в качестве переменной

Каждая строка сортируется по полям, затем файл и выбираются только уникальные строки

while read line
  do
    echo $line |
    tr ',' '\n' |
    sort |
    tr '\n' ','
done < 1 |
sed -e 's/^,//' -e 's/,$//' -e 's/,,/\n/g' |
sort -u
0
17.08.2021, 22:23
1 ответ

Если в вашей среде оболочки есть $USER, все должно работать, так как makeимпортирует все переменные среды. Но вам нужно позаботиться о том, действительно ли $USERотражает текущий идентификатор пользователя.

Однако внутри Makefiles существуют другие правила, отличные от внутренних сценариев оболочки. Вы можете проверить это с помощью следующего make-файла:

all:
        echo USER: $(USER)

и это должно работать. Обратите внимание, что makeтребует $ (... )для создания имен макросов, которые длиннее одного символа. Скобки необходимы, потому что в противном случае $Uбудет расширено.

Теперь к вашей проблеме с разрешением. Похоже, вы использовали программу типа suили sudo, которая изменяет идентификатор пользователя без изменения переменной оболочки $USER.

Попробуйте напрямую войти в систему как пользователь, которого вы хотите запустить make.

0
21.08.2021, 12:42

Теги

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