O que estou tentando fazer no bash é escrever um script, foo
que quando executo $(foo)
, ele muda o diretório e executa um script usando source
. O conteúdo de foo
:
echo cd bar
echo "&&"
echo source baz
Quando executo o $(foo)
, ele muda de diretório para "bar", mas não executa o source baz
. Existe alguma maneira de conseguir isso?
Responder1
Você precisa da eval
saída:
eval $(foo)
Caso contrário, &&
(ou qualquer outro elemento de linguagem semelhante) é tratado como se estivesse entre aspas: um argumento regular para cd
.
$ echo $(foo)
cd bar && source baz
Ignorando o início echo
, isso seria executado cd
com os quatro argumentos bar && source baz
, eliminando silenciosamente todos, exceto o primeiro.
Responder2
Você pode usarapelido(Veja também:cara, festa) para fazer o que você está tentando fazer.
alias foo='cd bar && source baz'
mudará o diretório para bar e source baz quando você executar foo.