Usando substituição de comando para executar vários comandos

Usando substituição de comando para executar vários comandos

O que estou tentando fazer no bash é escrever um script, fooque 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 evalsaí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 cdcom 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.

informação relacionada