> Why is the "rosrun ABSOLUTE_FILENAME [ARGS]" necessary for some
> scripts?
Because if I put
#! /usr/bin/env rosrun
in a script file named foobar.xyz, make foobar.xyz executable, and call
$ ./foobar.xyz arg1 arg2 arg3
then bash will effectively call
rosrun ./foobar.xyz arg1 arg2 arg3
(So actually the syntax is just rosrun FILENAME [ARGS], not necessarily
the absolute path )
So the syntax is merely for shebang, NOT for anyone ever putting
rosrun /path/to/filename
into any script or the command line.
> From the perspective of command-line usage, it doesn't add
> much value as it is equivalent to the user typing:
>
> ./ABSOLUTE_FILENAME [ARGS]
Absolutely, yes. That's my working assumption, the reason why I think
rosrun could be used instead of rosbang. That's what rosbang would also
do. So a rosbang command would be totally useless for command line usage.
The syntax of rosbang would equally be
rosbang FILENAME [ARGS]
and its effect would be the same as
./FILENAME [ARGS]
There is no reason why any user would ever type rosbang into the command
line. It would exclusively be used in
#! /usr/bin/env rosbang
> If there is a special need for a script, I would suggest a special
> option, e.g. '-f', to flag the different usage and make it
> unambiguous.
No, not only is that not necessary, but it would make it impossible to
use rosrun that way, as
#! /usr/bin/env rosrun -f
is not possible.
I was not aware of the rosexec thread. Went through it now. Introducing
rosexec PACKAGE/KEY as syntax would overlap with rosexec
directory/filename syntax, as far as i can see those could never be
merged into one command without the possibility of surprising the user
with unexpected actions in rare cases. So if that is still a
perspective, a separate command like rosbang might be wiser.