Bash - file manipulation

I need to change a file like this:

John Smith;http://www.profile1.com
John Smith;http://www.profile2.com
Frank Olsen;http://www.profile3.com
Frank Olsen;http://www.profile4.com

Into:

John Smith;http://www.profile1.com;http://www.profile2.com
Frank Olsen;http://www.profile3.com;http://www.profile4.com

Each name is supposed to be on one line.

try:

awk -F";" '!a[$1] {a[$1]=$0; next}a[$1] {print a[$1],$2}' OFS=";" input_file

I would use awk:

awk -F\; 'END {
  for (n in d) print d[n]
  }
{ 
  d[$1] = $1 in d ? d[$1] OFS $2 : $0
  }' OFS=\; infile