A lot depends on when those programs have to run and when you need their results. If it doesn't matter when they run (that is, their results don't vary with time), then it might be better to have them run from your
~/.bash_profile (i.e., when you log in) rather than from your
If you need their results, but can't wait the 5 seconds it takes for them to run, what are you going to do for the first 5 seconds that your shell is up? You can't run any commands that depend on the outputs of those programs, because the results won't be available yet.
I think if you describe in more detail exactly what the requirements are, we might be able to give you better answers.
All that said, you could launch your programs in the background as Dennis Williamson suggested, and have them write their results to some files in your home directory. Then you could set the bash variable
PROMPT_COMMAND to source those files, which bash would then do before every display of
For example, say your background program writes
export ans=42 to the file
~/answer when it's done. In your
Then every time the shell displays
PS1, it will first source
~/answer and your environment will eventually (e.g., 5 seconds after starting) contain the variable
ans with the value
Of course, the first 5 seconds after you start the shell,
~/answer will contain the values from the last time you started a shell, so you'd have to decide whether that's important (and how to reset that file if necessary).