I have a parent script while read cmd do  nohup ./script ${cmd[@]} &>> log &done < ~/list that executes this child script while truedo   eval ${CMD[@]}  #${CMD[@]}  #./panicdonewith this list of commandsnode ~/www/splash/app.jsnode ~/www/splash-two/app.jsWhen the child script calls eval ${CMD[@]} it executes the way I expect running that command with no complaints but when I try to remove the eval and run the command using ${CMD[@]} it throws the error: Error: Cannot find module '/home/rumplefraggle/SYS/RABBOT/~/www/splash/app.js'Now I thought possibly this had something to do with the node command so I tried to execute ls ~as the command and it throws the error that ~ can not be found.Echoing ${@} and not running it expands as I would expect it to.Also manually inserting the command into the child script also works as expected I don't understand why eval works and simply running the command using ${@} does not. What is causing ${@} to not expand the ~?Why is node appending the directory name to the command when ${@} is used?
Bash expansion of ${@} as command
bash;shell script;brace expansion