South Africa Test captain Faf du Plessis was on Monday named as the country's one-day international skipper to add to his leadership roles in Test and Twenty20 internationals.
Du Plessis, who is in Lahore this week to lead a World XI in three T20 internationals against Pakistan, takes over from AB de Villiers.
De Villiers announced recently that he was stepping down from the ODI captaincy despite an earlier stated ambition to lead South Africa to the 2019 World Cup.
"Congratulations to Faf on his appointment as the natural successor to the ODI leadership," CSA chief executive Haroon Lorgat said in a statement.
"He has established himself as one of the best leaders in world cricket and this was reflected in his appointment as the captain for the World XI currently engaged in the T20 Series against Pakistan."
Du Plessis has forged a strong captaincy record after initially being appointed only to the T20 role in 2012.
He was named full-time Test captain last year after De Villiers decided to take a break from the longest cricket format after missing two series because of injury.
Du Plessis led South Africa to series wins against New Zealand (twice), Australia and Sri Lanka before South Africa were beaten in a recent series in England.
He also captained South Africa to a 5-0 ODI sweep against Australia while De Villiers was injured.
South Africa's next international engagement is at home against Bangladesh, who will play two Tests, starting on September 28, followed by three ODIs and two T20 internationals.
Fast bowler Dale Steyn, who has not played any cricket since suffering a broken shoulder in a Test in Australia last November, could make his international return in the Test series.
He is planning to play for the Titans franchise in a first-class match next week after a long period of rehabilitation.
Steyn needs five wickets to overtake Shaun Pollock's South African Test record of 421.
Bangladesh will be without star all-rounder Shakib Al Hasan in the Tests after he requested a break from the longest format.