Псевдоним в ударе не может иметь аргументов, но можно использовать функции.
e() { emacs "$@" & }
затем
e foo.txt
сделает то, что Вы хотите.
Вы правы, что закончите с тем же исполняемым файлом в конце (хотя с другим именем); в первом случае gcc на самом деле создаст набор файлов временного объекта, которые он удаляет после соединения, по сравнению со вторым случаем, где Вы делаете объектные файлы сами.
Главная причина сделать вещи второй путь состоит в том, чтобы допускать возрастающее здание. После компиляции проекта однажды скажите, что Вы изменяетесь Something.cpp
. Единственный затронутый объектный файл something.o
- нет никакой причины напрасно тратить время, восстанавливая другие. Система сборки как make
распознал бы, что и только восстанавливают something.o
прежде, чем соединить все объектные файлы.