Каково назначение двойного тире, используемого в команде `runuser -u username --`? Как оно позволяет избежать проблемы с использованием множества апострофов и кавычек при запуске команды от другого пользователя?
Двойное тире «--» в команде `runuser -u username --` используется для указания конца опций командной строки и начала аргументов команды, чтобы избежать интерпретации символов `-` в качестве опций команды, если они начинаются с этого символа. Это позволяет избежать проблем с использованием множества апострофов и кавычек при запуске команды от другого пользователя, так как `runuser` будет принимать оставшуюся часть команды как аргументы, а не опции.
man bash
--
signals the end of options and disables further option processing. Any arguments after the -- are treated as filenames and arguments. An argument of - is equivalent to --
Сообщает, что опции у запускаемой команды закончились и дальше будут только позиционные аргументы, характерный пример использования найти подстроку-v
с помощью grep в текстовом файле:grep -- -v file.txt
, если не добавить--
, то grep воспримет-v
, как свою опцию, а не подстроку для поиска.
Это способ корректно обработать управляющие символы не прибегая к "понапихать кучу апострофов и кавычек в несколько слоев".