Custom 'context' bash ao correr de FISH

2

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 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:28

2 respostas

3

Você pode definir uma variável no script que inicia fish para observar que você está "em fish ":

export IN_FISH=yes

Então, antes disso, você verifica se já está definido:

if [ "${IN_FISH}" != "yes" ]; then
    export IN_FISH=yes
    fish  # replace with the command you use to start fish
fi

Assim, no seu primeiro bash , IN_FISH não está definido, por isso é definido e fish é iniciado. Quando você inicia bash de FISH, IN_FISH já está definido, então bash não inicia fish novamente ...

    
por 09.02.2015 / 13:46
0

Além disso, eu estava pensando, você poderia editar o script para usar explicitamente o BASH inserindo um:

#!/pathtobash/

no script como a primeira linha

por exemplo. #! / bin / bash

ou faça um explícito

/pathtobash/scripttorun

ligue, e. / bin / bash / scripttorun

    
por 11.02.2015 / 16:53

Tags