emerge sync never should have become emerge --sync, of course 2 years ago I thought it was the right thing, it isn’t though, live and learn. sync is currently an argument with the syntax of an option.
What’s the difference?
An argument is what the command, or executable operates on. Some examples
cp file0 file1copies file0 to file1.lslist the current working directoryls dir0lists directory dir0
Right, so how is --sync an argument and not an option?
Options effect how commands operate on arguments. For example cp file0 file1 will overwrite file1 if it exists. cp --interactive file0 file1 will prompt to overwrite if file1 exists. ls -R will list any files and directories off the current working directory recursively. ls -R dir0 will list any files and directories off dir0 recursively.
I still don’t understand why sync isn’t an option, it isn’t a file so wouldn’t it be an option?
Well that’s basically what I used to think, not a file not an argument. It’s not true to understand better I suggest picking up a version control system (e.g. svn) and seeing how you can have arguments that aren’t files. Example svn checkout -r 1346 checkout revision 1346. See the -r switch is an option that operates on the checkout argument to the svn command.
Starting to get it…
--sync currently doesn’t affect any target, doesn’t change a thing but isn’t a default either. Some options are just there for explicitness and are in effect unless another option is there.