Excecuting php function in shortcode

This will probably not work, or work in unexpected way. Shortcodes should probably be displayed only on a “post” single page. Using a shortcode in the way you want will either make the breadcrumbs not to be displayed on archive pages or have them displayed there multiple times or wrong places.

What you should do is a minimal modification to the theme. Insert a do_action('show_bc); at the appropriate place in the header file (“fork” it in a child theme if you use one). Then add something like add_action('show_bc','breadcrumb_trail'); in the theme’s functions.php or in a plugin.

As for the exact problem you have in your code, it is because shortcode handlers are supposed to return HTML, and not to output it. If the BC function do not have an option to return the HTML instead of echo-ing, you will have to do output buffering around its call.