56
votes

I am currently trying out the fish shell instead of using bash. One type of notation I'm having trouble learning the fish-equivalent notation for is $(command), similar to how it is described in this SOF post. How do I write this using fish? Keep in mind that I could use backslash characters around the command I want to evaluate, but the linked post and other posts discourage this because it is an old style of evaluating commands.

Specifically, this is the bash command I want to convert to fish syntax (for initializing rbenv during startup of the shell):

eval "$(rbenv init -)"
2
Per this entry in the fish FAQ, sub-commands are denoted by surrounding them with parenthesis. e.g., set foo (echo bar); echo $foo outputs bar.iscfrc

2 Answers

76
votes

In fish, $ is used only for variables. Correct notation equivalent to bash $(command) is just (command) in fish.

9
votes

FYI: If you additionally need to use this inside a string:

echo "Found "(count $PATH)" paths in PATH env var"