Nenhum arquivo bashrc no meu diretório home

8

Aqui está o que eu anotei na minha palestra:

  • Encontre o arquivo .bashrc em seu diretório pessoal
  • do vi .bashrc
  • Quando você coloca uma pasta de aplicativos em algum lugar, certifique-se de que seu endereço esteja no variável de caminho.

O problema é que eu não tenho um arquivo .bashrc no meu diretório inicial. Existe apenas um arquivo .bash_history em minha casa.

Se eu for para a raiz, há um arquivo etc/bash.bashrc lá, mas o que eu acho é que ele fará alterações para todos os usuários e não apenas para mim. Eu quero adicionar este caminho só para mim. Não deve afetar os outros. Também não há $PATH variável nesse arquivo bashrc, então estou ainda mais confuso.

    
por detraveller 18.04.2013 / 15:04

5 respostas

11

Não se esqueça de que é um arquivo oculto dentro de seu diretório pessoal (você não seria o primeiro a fazer um ls -l e pensar que não está lá).

Faça o seguinte ...

ls -la ~/ | more

Deve haver um .bashrc na primeira página. Se não basta criá-lo com

vi ~/.bashrc

E simplesmente escreva a seguinte linha.

PATH=$PATH:~/bin

OU A maioria das distribuições mantém um arquivo .bashrc padrão em /etc/skel/ . Você pode copiá-lo para o diretório inicial.

$cp /etc/skel/.bashrc ~
    
por 18.04.2013 / 15:13
10

A maioria das distribuições mantém um arquivo .bashrc padrão em /etc/skel/ que você pode simplesmente copiar para o diretório home. Caso contrário, você poderia criar um novo arquivo .bashrc vazio em seu diretório inicial.

    
por 18.04.2013 / 15:07
3

Crie seu próprio arquivo de inicialização para shells interativos

Sobre os arquivos de inicialização do Bash

Da seção INVOCATION de man 1 bash diz:

When an interactive shell that is not a login shell is started, bash reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if these files exist.

Note que estes arquivos de inicialização são opcionais ; Bash não precisa deles. Bash também diferencia entre shells de login e shells interativos. Um shell interativo é definido assim:

An interactive shell is one started without non-option arguments and without the -c option whose standard input and error are both connected to terminals (as determined by isatty(3)), or one started with the -i option.

Muitas distribuições originam um tipo de arquivo de inicialização do outro, mas outras não, portanto, esse problema pode ser difícil de ser resolvido canonicamente. Você precisa examinar todos os seus arquivos de inicialização para ver como e quando seu ~/.bashrc será invocado no seu sistema.

Criando seu arquivo de inicialização do shell interativo por usuário

Se você simplesmente não tiver um arquivo ~/.bashrc específico do usuário, basta criar um. Isso será invocado pelo Bash para shells que não são de login (por exemplo, shells iniciados sem o --login flag), ou sempre que você forçar o shell a ser interativo chamando-o com o -i flag.

    
por 18.04.2013 / 15:18
0

Se você não tiver um .bashrc , basta criar um e adicionar as linhas desejadas, como:

PATH=$PATH:~/bin

para adicionar o diretório bin do usuário ao final do caminho.

Mas você deve ter cuidado se houver outros arquivos de inicialização. As regras sobre quais arquivos são usados são bastante complexas, mas estão detalhadas na página bash man. Digite man bash em uma linha de comando e procure por INVOCATION .

    
por 18.04.2013 / 15:07
0

Respostas curtas:

  1. find ~ -maxdepth 1 -name '.bashrc'
  2. vi ~/.bashrc
  3. echo $PATH | grep ~/MyNewCoolProgramFolder

Detalhado:
Eu tomo uma interpretação literal mais próxima.

  1. "Encontre o arquivo .bashrc no seu diretório pessoal"
    Como existe o comando find , talvez o editor traiçoeiro sugira que você o use:

    find ~ -maxdepth 1 -name '.bashrc'
    

    Pesquise no diretório inicial ~ , desça apenas de um nível (sem subdiretório -maxdepth 1 ). Para todas as opções, escreva man find .
    A linha abaixo do vai fazer o trabalho mínimo

    ls ~/.bashrc   
    

    Observação: No caso de ~/.bashrc não existir, você pode criá-lo com um simples echo >> ~/.bashrc .

    O >> criará o arquivo, se não existir. Se o ~/.bashrc existir, ele anexará apenas a saída inofensiva do vazio echo , evitando uma exclusão não intencional de um arquivo crítico, que é acidentalmente difícil de restaurar sem um backup.

    (O seguinte é porque raramente eu tenho que honrar o significado do meu apelido, não execute se você estiver em dúvida).

    if [ ! -f ~/.bashrc ] ; 
      then
         cp -i /etc/skel/.bashrc ~/.bashrc ;
      else ls -la ~/.bashrc; 
    fi || echo " # Auto Generated " >> ~/.bashrc
    
  2. "Do vi .bashrc "
    Agora você pode fazer vi ~/.bashrc , a armadilha aqui é que você precisa pressionar : e q para sair!

  3. Pasta do aplicativo e $PATH
    Quando você cria uma pasta de aplicativos, por exemplo ~/MyNewCoolProgramFolder , a linha abaixo somente verificará se está no $PATH :

    echo $PATH | grep ~/MyNewCoolProgramFolder
    

    Você não precisa adicionar se já existe. Se necessário, você pode adicionar à $PATH com

    PATH=$PATH:~/MyNewCoolProgramFolder
    

    e adicionar essa linha a ~/.bashrc se você quiser torná-la permanente.

  4. "4?!? Como 4 se houvesse apenas 3 pontos?" - Soluções alternativas.
    Existem algumas soluções para o último; vamos supor que um arquivo executável chamado CoolDetraveller exista apenas na sua nova pasta de aplicativos:

    (a) Você pode tentar executá-lo. Simplesmente não será iniciado se não estiver no $PATH .

    CoolDetraveller: command not found

    (b) Você pode tentar seu preenchimento automático . Comece a escrever CoolDetravelle e pressione Tab . Se estiver no $PATH , ele será preenchido automaticamente (sempre que o preenchimento automático estiver ativado).

    (c) Você pode pedir ao comando bash shell which que será usado se você escrever o comando CoolDetraveller .

        which CoolDetraveller
    

    Nota: Se no caminho do aplicativo houver um ou mais espaços, which poderá não encontrar CoolDetraveller , embora (aqui eu honre meu apelido novamente) a auto-conclusão de CoolDetraveller como um válido O parâmetro do comando which funcionará!

    Ad nauseam : não é possível pedir whereis CoolDetraveller porque whereis

    has a hard-coded path, so may not always find what you're looking for

por 14.10.2015 / 13:11

Tags