Bash
имеет встроенную команду под названием time
. Так что если вы просто введете time
, он будет использовать встроенную команду оболочки, которая не имеет опций, таких как -f
. Но man time
(в котором говорится о -f
) даст manpage программы /usr/bin/time
. Поэтому, если вы хотите использовать опции, описанные в manpage, вы должны убедиться, что вызываете программу, а не встроенную оболочку. Один из способов достижения этого - использование полного пути.
(IMHO, это очень некрасиво в bash)
Для получения дополнительной информации смотрите ссылки под вопросом.
После публикации этого вопроса и с помощью обсуждения, последовавшего за ранее опубликованным ответом, я нашел следующий ответ в исходном коде Cinnamon:
/**
* cinnamon_global_reexec_self:
* @global: A #CinnamonGlobal
*
* Restart the current process. Only intended for development purposes.
*/
void cinnamon_global_reexec_self (CinnamonGlobal *global)
{
meta_restart ();
}
Я реализовал доступ к этой функции как команду bash (restartcinnamon
), добавив следующую строку в мой файл .bashrc
:
alias restartcinnamon='dbus-send --type=method_call --print-reply \\
--dest=org.Cinnamon /org/Cinnamon org.Cinnamon.Eval \\
string:'\''global.reexec_self()'\''' \\
/usr/bin/dbus-send
Cinnamon, как и GNOME, из которого он был создан, перезапустит сеанс, когда вы наберете r
в окне Alt-F2 . Он просто говорит ему повторно -выполнить себя, поэтому он не вызывает новую команду, а говорит оконному менеджеру Cinnamon повторно -выполнить.