запись и просмотр видео4linux одновременно

Может возникнуть оговорка, если вы планируете читать переменную среды $USER в команде, начиная с sudo.

Расширение переменной Bash происходит до запуска sudo для переключения пользователей, это означает, что переменная $USER считывается из текущей среды до того, как sudo переключится на root.

$ echo $USER
bytecommander

$ sudo echo $USER
bytecommander

Если это не предназначено, и вам нужен метод, который вернет имя пользователя, которого он действительно запускает (обычно «root»), у вас есть как минимум три варианта для этого:

Run интерпретатор bash как root и передайте ему команду, которая содержит $USER. Вы должны убедиться, что команда заключена в одинарные кавычки, чтобы предотвратить интерпретацию текущего интерпретатора Bash:
sudo bash -c 'echo $USER'
Использовать вывод команды вместо переменной среды $USER. Здесь есть, в основном, две команды, whoami и id -un:
$ whoami
bytecommander

$ sudo whoami
root

$ id -un
bytecommander

$ sudo id -un
root
Более подробную информацию об этих командах можно найти, набрав man whoami и man id.

Вы можете использовать эти команды как переменную и вставлять их в строку (например, путь к каталогу), как это, используя синтаксис подстановки команды Bash. Вот два примера, которые cd относятся к директории, названной в честь текущего пользователя:

cd /path/to/$(whoami)folder
cd /path/to/$(id -un)folder
1
задан 4 October 2011 в 02:18

0 ответов

Другие вопросы по тегам:

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