Não sei por que você tem o comando env
, mas funciona bem se você removê-lo:
$ function be() {
> echo "$@"
> }
$ function envstg() {
> RAILS_ENV=staging "$@"
> }
$ be rails server
rails server
$ envstg be rails server
rails server
Eu quero invocar a função shell em string. Aqui está o meu caso de uso:
function envfoo() {
env ENV_FOO=foo $@
}
function envbar() {
env ENV_BAR=bar $@
}
$ envfoo env |egrep ENV_
ENV_FOO=foo
$ envbar env |egrep ENV_
ENV_BAR=bar
$ envfoo envbar env |egrep ENV_
env: envbar: No such file or directory
# expected result: ENV_FOO=foo and ENV_BAR=bar lines
Aqui, quero que envfoo
execute a função envbar
shell.
Como posso fazer isso?
Digamos que seja o oposto de command
, que ignora a função shell e encontra um comando real.
Talvez eu tenha dado um exemplo errado. Eu quero combinar várias funções de shell como executáveis reais. Um caso real é assim:
function be() {
bundle exec $@
}
function envstg() {
env RAILS_ENV=staging $@
}
$ be rails server
# launches Rails server
$ envstg be rails server
env: be: No such file or directory
Aqui be
não está expandido no pacote exec. Como posso expandi-las?
Não sei por que você tem o comando env
, mas funciona bem se você removê-lo:
$ function be() {
> echo "$@"
> }
$ function envstg() {
> RAILS_ENV=staging "$@"
> }
$ be rails server
rails server
$ envstg be rails server
rails server