司马迁回长安后的公元前124至前129年,是汉朝自卫青大破匈奴,收复河南地后,对匈奴大举征伐的时期。司马迁7岁时,出使西域的张骞刚出汉朝国境就被匈奴抓了去,被扣留了十多年,才趁机会逃了出来,不过他没有立即回国,而是继续他的使命,去联络大月氏。

大月氏是西方的一个游牧民族国家,位于现在的中亚地区。在张骞被匈奴拘留期间,大月氏被另一支游牧民族乌孙所压迫,从伊犁河流域迁到了更西边的阿姆河流域。张骞到大月氏停留了一年多,回国途中又被匈奴扣留了一年多,才逃回长安,当时正是司马迁20岁出发游历的那年。

张骞前后出使13年,虽然没有达成联络大月氏、夹击匈奴的使命,但深入了解了西域各国的国情,带回不少珍贵的资料,对于汉武帝和匈奴争夺西域霸权起到了相当大的帮助作用。

张骞回国是一件大事,司马迁很可能曾经向他请教过关于西域各国的问题,他在《大宛列传》中指出:古籍上说黄河源于昆仑,可是,张骞出使大月氏,可以说已经到了黄河的源流处以外了,却并没有见到什么昆仑。

这就是司马迁的实证精神,也是他先前展开游历的收获之一。他喜欢实地考察古籍上的说法,受到限制无法自己亲身前往的,也要从去过那里的人口中得到一些经验。

张骞回国以后,汉军接连展开一连串对匈奴的主动攻击,战果比较丰硕的有三次:第一次是元朔五年(前124年),司马迁22岁时,由卫青统率苏建(苏武的父亲)、李蔡(李广的堂弟)等人的大军,由高阙塞(今宁夏磴口县附近)、朔方(鄂尔多斯高原)出发,出塞六七百里,俘虏匈奴一万五千多人,牛羊数十万头。

第二次是元狩二年(前121年),司马迁25岁时,汉武帝遣霍去病为将两次统兵出征,斩匈奴共约四万人。匈奴单于率众投降,汉朝得到了黄河以西今甘肃境内的大片土地,设武威、张掖、酒泉、敦煌四郡。

第三次是元狩四年(前119年),司马迁27岁时,由卫青、霍去病各率五万骑出击。卫青从定襄(今山西定襄县)出塞一千多里,将匈奴赶到今蒙古境内才班师回朝。霍去病则从代郡(今山西东北部)出塞两千余里,至狼居胥山(具体位置存疑)而还。

最后一次出击,汉军把匈奴人赶到了遥远的北方,但双方损失惨重,几乎不相上下。汉军出塞时有十四万匹马,回来时就只剩下三万匹,损失了近百分之八十,这使汉朝短期内没有能力再发动大规模的攻击。同时,这次战役也暴露了汉军的一个致命问题,就是掌握指挥权的外戚军人和担任战斗主力的关西军人之间存在着严重的矛盾和摩擦。这种矛盾和摩擦与日后司马迁的遭遇有着密切关系。他27岁那年,这种摩擦发展到了极致——关西军人中声望最高的将军李广在随同卫青出征途中自杀!

李广,成纪人(今甘肃静宁西南),他的先人曾在秦朝为将,他的子孙后来也都在汉朝为将,李家可以说是军人世家。

李广在文帝时就已经崭露头角,文帝曾慨叹他生不逢时,如果生在高祖时代,封个万户侯“岂足道哉!”这种说法是因为文帝时还采取与民休息的政策,除了小规模的战事,并没有机会让李广好好表现。

到了景帝时,七国之乱中,李广曾随太尉周亚夫攻打叛军。叛乱平定后,他曾出任北方一些边境城市的太守,由于国家政策未变,仍然没有施展才华的机会,不过一些小型的边境战争也使李广名扬天下。

汉武帝即位后,一直想有所作为,李广受人举荐,由边境的太守调升为卫尉,而后在司马迁12岁(前134年)时被封为将军镇守雁门关。他在一次敌我兵力悬殊的战役中被俘,然后凭借勇猛机智逃了回来,但被废为庶人,后来又被任命为右北平太守。

李广镇守边境期间,匈奴人惧怕他的勇猛过人,好几年不敢妄动,李广也因此得到了“飞将军”的称号。后来,元朔六年(前123年),即司马迁23岁时,李广被任命为郎中令,直到四五年后他自杀为止,都是以这个官衔挂将军衔率兵出征的。

前面我们说过,郎中是郎中令的下属之一,那么也就是说,李广在他生前的四五年里,有可能是司马迁的上司。当然,即便这是事实,这种宫廷服务性质的官也很难有同事间相互交流的机会。李广绝大部分时间都在边境,所以司马迁与他见面的机会一定不多,但不至于完全没有。

有一种说法认为,司马迁担任郎中是在李广死的那年,或者在那年以后。不管怎么说,司马迁应该是见过李广的。他在《李将军列传》中提到了他对李广的印象:“余睹李将军悛悛如鄙人,口不能道辞。”翻译成现代汉语就是:我看李将军老实得像个乡下人,也不太会说话。