司马迁的直系先祖是魏国少梁人并不错,而司马错却是地地道道的秦国人,把司马错说成是司马迁的直系先祖实在是过于牵强。应该说,司马迁的《太史公自序》给人留下的概念是模煳的,他在写完「在秦者名错」之后,紧接着又写了一句:「错孙靳」,这是问题的焦点,也是最容易引起人们误会之处。因为司马靳肯定是司马迁的直系先祖,既然司马靳是司马错的孙子,司马错理所当然也就是司马迁的先祖了。
那麽这位与白起一起被处死的司马靳到底是不是司马错的亲孙子呢?如果是,司马迁为什麽不交代司马靳的父亲是谁?看来他的父亲绝不是司马错的儿子司马梗,否则司马迁不会避而不谈。司马梗于秦昭王四十八年(前259)「北定太原」,而秦昭王五十年(前257)司马靳就和白起一起被赐死,而且两者之间似乎毫无关联,司马迁在书中也没做任何交代。显然司马靳不可能是司马梗的儿子,当时他在军中的地位,最多也就是武安侯白起的一个副将,与司马错和司马梗的地位相去甚远。有人或许猜想司马靳大概是司马错其他儿子所生,这似乎也不可能,如果真是那样司马迁不会不做交待。估计司马靳根本就不是秦系司马氏的后人,他是真正的魏国少梁人,也就是司马迁的直系先祖。因为此时秦国早就攻下了魏国的河西之地,少梁已经归属于秦国,改称秦国少梁,所以魏系的司马氏也变成了秦国人。
巧合的是秦国的司马错和中山国的司马憙恰好是同辈人,而且都是出生在西元前345年前后,他们的儿子秦国的司马梗和中山国的司马子期(又作司马期)也是同龄人,都出生在西元前320年前后。根据先秦史书记载和现代考古发现推断,司马靳很可能是司马子期的儿子。西元前299年,赵武灵王攻佔中山,司马憙父子不但没有得到重用,还被赵武灵王罢官免爵。司马憙父子含羞带愧无脸面继续留在中山,便遣散家奴,灰熘熘的逃回老家少梁閒居起来。司马靳就是在此期间出生在少梁城。司马靳的生卒年大约是西元前290——前257年,于西元前257年与白起同时被秦昭王赐死。
司马迁以移花接木之术巧妙地把自己的前辈世系依附在司马错的名下,借以炫耀自己祖宗的威望,同时也掩盖了自己真正的直系先祖。