司马迁出身于中下层官吏家庭。高祖司马昌,当秦始皇时,作主铁官。曾祖司马无泽,在汉初作长安的一个“市长”。祖司马喜,没有做官,而有第九等爵位,为五大夫。他的家庭在汉文帝时可能是所谓“中人之家”,以农业、畜牧致富,因而能够出粟买爵。司马迁说自己“耕牧河山之阳”,不一定就是亲自参加耕牧。
父司马谈,在汉武帝建元年间(公元前140—前135年)作了太史令,通称太史公。这是史官,汉武帝新恢复的一种古官。官位不高,职权不大,主官天时星历、祭祀礼仪、搜罗并保管典籍文献。这是史官的传统。
史官掌握文化知识,是历史上出现最早的一种官。从殷周到春秋战国,史官的职权、地位逐渐降低,但他们的政治地位从来没有改变。他们的职掌,历代相传,最重要的是为王家记言记事。在殷周时代,他们记录的是王室的言和事。在春秋战国时代,他们记录的范围扩大到各国统治者及其卿大夫的言和事。但到武帝时,太史令并没有这项职掌,司马谈自觉地按照古代史官传统,准备要为新兴的封建统治阶级记言记事。他在大约三十年(公元前140~前111年)的太史令职守上,在“百年之间,天下遗文古事靡不毕集太史公”的便利条件下,不仅有论述历史的志愿和计划,而且很可能已开始了部分的撰述工作。司马谈到长安做官以后,司马迁自然地随着父亲到长安,有了更多的学习机会。司马迁自说“年十岁则诵古文”,当是到了长安以后的事情。所谓“古文”,就是用古代文字写的典籍。汉初传习的古书,许多是用汉代通俗应用的隶书即所谓“今文”写的,也有先秦保存下来的,用古文写的。司马迁十岁时所诵的“古文”,就是指某些用古文写的书,不是专指某一种书。由此可见,司马迁很早就有古文的修养。
司马迁(前145或前135—约前87)(补注:前145取自《太史公自序》的《正义》,所依据的是唐代张守节《正义》注称:“太初元年,迁年42岁。”太初元年(公元前104年)往上推42年,则是景帝中元五年(公元前145年)王国维,梁启超等主此说。前135取自《太史公自序》的《索隐》,依据晋代张华《博物志》称“大夫司马迁,28岁古六月乙岁卯,石也”。也就是说,汉武帝元封三年(公元前108年),司马迁升为太史令,年28岁,由此上推二十八年,即武帝建元六年(公元前135年)应为司马迁生年。郭沫若等主此说。一般采用前说)补注:持“建元六年说”者,千方百计证明《博物志》是对的,而认为张守节《正义》的记载是错误的。理由主要有以下几点:其一,《博物志》该条所录的是汉代记籍簿,它记载着司马迁的姓名、年龄、居住地、官爵、拜官年月和俸禄等等。如此详细而真切,是录自汉代文书,其真实无疑。这是一种原始材料,它的价值远远超过一般史书中的材料。其二,司马迁《报任安书》中有一句话:“今仆不幸早失二亲。”如按《正义》所言司马迁生于景帝中元五年,元封元年(公元前110年)其父司马谈死时,司马迁应是36岁。按常理,36岁死去父母说不上“早失二亲”。如按《博物志》所言,司马迁生于武帝建元六年,即26岁父死,说早失父母尚说得过去。其三,司马迁《报任安书》作于征和二年(公元前91年),如果他生于景帝中元五年,这一年应是55岁,他做郎中是在20岁左右邀游各地回来后的事,那么,他应该说待罪辇毂下30余年了。显然,司马迁不会连自己做过的事都记不清楚。只有晚生10年,即武帝建元六年,才符合其说。
持“景帝中元五年说”者除依据张守节的《正义》外,还提出以下几个问题或论据。其一,王国维在《太史公行年考》中认为后人引用《博物志》所以年“二十八”应是“三十八”之误。《正义》注称太初五年,司马迁“处四十二”是正确的。其二,根据〈史记·游侠列传〉所载武帝元朔二年(公元前127年),下令将各地毫强和资财三百万缗以上的富户迁往茂陵,郭解财产不多,也被强行迁徒,司马迁也见到郭解,他说:“吾观郭解状貌不及中人,言语不足采者。”若司马迁生于建元六年,当时年仅九岁,决不可能对人有如此深刻的观察和心理活动。如果按司马迁生于景帝中元五年,年龄为十九岁,似更合适。其三,根据《汉书·儒林传》,司马迁曾向孔安国学习古文,然据《史记·孔子世家》和《资治通鉴》,孔安国在元朔二年为博士,元朔二年司马迁年方九岁,一个九岁的孩子是不可能去太学向一个经学大师求教和商量问题的;如果生于景帝中元五年,此年十九年,似较合理。