The four examples are functionally equivalent.
Backticks are obsolete, and unless you are using an 1970 shell like a Bourne shell (like Heirloom) you do not need them. The main problem is that they are quite difficult to nest, try:
$ echo $(uname | $(echo cat))
Linux
$ echo `uname | `echo cat``
bash: command substitution: line 2: syntax error: unexpected end of file
echo cat
On the rigth side of a command line with only an assignement it is not necesary (but harmless) to quote the expansion, as the expansion is considered quoted anyway:
$ var=$(uname)
But that is not always true, an assignment on the command export is regarded as an argument and will be split and glob in some shells (not in bash):
$ dash -c 'export MYVAR=`echo a test`;echo "$MYVAR"'
a
The same reasoning apply to local
(Are quotes needed for local variable assignment?) and declare
(and some other).
What you should do to "fix it", is:
x=$(command -v r2g)
And sometimes (for portable scripts):
export x="$(command -v r2g)"
"
, I think. – Alexander May 28 '18 at 08:10