Python 2.6+
import itertools,sys
print('\n'.join([' '.join(a) for a in list(itertools.permutations(sys.argv[1:]))]))
Собственно, генерятся в список перестановки через itertools.permutations() (получается вложенный список), затем варианты переводятся в строки (слова разделяются пробелом), разделенные переносом строки.