Custom 'context' bash ao correr de FISH

1

Primeiro de tudo, estou no OSX10. Meu shell padrão é BASH, que eu configurei (através de .profile e .bashrc) para executar automaticamente o shell FISH quando eu abro meu emulador de terminal. Isso me permite configurar variáveis etc. no BASH antes de carregar o FISH.

Por vezes, no entanto, quero executar scripts que são escritos para o BASH, a partir do meu shell FISH. Isso é necessário porque o FISH não é sintaticamente compatível com o BASH. Ao digitar 'bash' no meu FISH, o BASH que eu abro automaticamente abre outro FISH em cima de si mesmo, por causa do meu .profile / .bashrc. Isso torna tudo suspeito (trocadilho intencional), porque eu tenho que sair do topo FISH para entrar no BASH no topo do segundo FISH.

Minha pergunta é: Eu sei que o BASH pode ser carregado como um shell de login (executando .profile) e um shell não-login (executando .bashrc). Seria possível adicionar um terceiro 'contexto', que eu possa configurar para carregar quando o BASH é executado de dentro do FISH? Isso resolveria o problema do double-FISH porque eu não conseguiria carregar o .bashrc ou o .profile.

Espero que você entenda a minha pergunta - obrigado antecipadamente pelas respostas!

    
por Henrik Hillestad Løvold 09.02.2015 / 13:20

1 resposta

2

Se você quiser executar scripts do seu fish shell, não há necessidade de adicionar um terceiro contexto, tudo o que você precisa fazer é executar bash myscript.sh .

Na página do bash man:

~/.bash_profile
    The personal initialization file, executed for login shells
~/.bashrc
    The individual per-interactive-shell startup file

Se você não invocar um shell de login bash -l ou um shell interativo bash , mas usar um script como argumento, não haverá nenhum arquivo carregado.

Por exemplo, se o arquivo test.sh contiver

function bashtest {
    echo "test"
}
bashtest

Se eu o executar usando o bash, ele será executado corretamente usando o bash como um interpretador.

Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
$user@host ~> bash test.sh
$test
$user@host ~> 

Se você quiser digitar um comando bash diretamente, você pode canalizar seu comando para bash da seguinte forma:

$user@host ~> echo "function bashtest { echo test; }; bashtest" | bash
$test
$user@host ~> 
    
por 09.02.2015 / 18:00