Editar bash_profile?

1

Estou tentando aprender bash. Estou usando o Ubuntu.

Eu quero adicionar uma função. Não tenho certeza se preciso criar um arquivo .profile ou .bash_profile , portanto, criei ambos no diretório ~/ .

Eu adiciono algo assim em cada um deles:

myfunc()
{
    echo "function ran"
}

Eu saio do meu usuário e entro de volta, eu corro isso na linha de comando:

me@host:~$ myfunc

que apenas retorna:

myfunc: command not found

Não tenho certeza do que estou fazendo de errado.

    
por JD Isaacks 30.06.2010 / 19:53

3 respostas

4

Seu ~ / .profile ou ~ / .bash_profile são originados pelo processo de login. Um shell que você executa em uma janela de terminal é executado em um processo diferente, que é um descendente do processo de login. Certas configurações feitas pelo processo de login são exportadas para processos-filhos, mas aliases e definições de funções não são. Aliases e funções devem ser definidos no arquivo rc do seu shell, ~ / .bashrc neste caso. Esse arquivo é originado por todo processo bash interativo.

Para saber se você deve colocar as configurações de variáveis de ambiente e outros códigos de inicialização em ~ / .profile ou ~ / .bash_profile, man bash diz que os shells de login procuram por ~ / .bash_profile, ~ /.bash_login e ~ / .profile, nessa ordem, e leia o primeiro encontrado. Portanto, se você tiver ~ / .bash_profile e ~ / .profile, somente ~ / .bash_profile será lido e ~ / .profile será ignorado. O que você usa depende de você, mas se você planeja usar shells diferentes de bash, você pode querer colocar suas configurações em ~ / .profile e deletar ~ / .bash_profile.

    
por 30.06.2010 / 21:03
2

Na linha de comando, basta digitar:

function myfunc()

ENTER

{

ENTER

echo "function ran"

ENTER

}

ENTER

Chame a função digitando a função da seguinte forma:

$ myfunc

Remova a função usando:

unset -f myfunc

Verifique isso para mais informações:

por 30.06.2010 / 20:01
1

Para ver quais arquivos são executados em qual ordem, você pode querer colocar um comando singel echo ou printf nesses arquivos. Então você verá quando eles são executados.

# You could try this
echo "This will be printed"
printf "This will also be printed (%d)\n" 10

Para ver como o eco e a impressão funcionam, você deve usar o comando man (1) e procurar na página man do bash (1). O parêntese após os comandos informa qual seção do manual você encontra a informação. 1 significa um comando ordinário. Você deve tentar estes comandos:

man man
man -k manual
man bash

Na página de manual do bash, procure a seção "SHELL BUILTIN COMMANDS" (tente / e escreva o que você procura, ou use a tecla space). Existem as informações sobre os comandos que estão embutidos no bash, como echo e printf.

    
por 30.06.2010 / 23:50