Nenhum arquivo bashrc no meu diretório pessoal

14

Aqui está o que anotei na minha palestra:

  • Encontre o arquivo .bashrcem seu diretório pessoal
  • Faz vi .bashrc
  • Ao colocar uma pasta do aplicativo em algum lugar, verifique se o endereço está na variável do caminho.

O problema é que eu não tenho um .bashrcarquivo no meu diretório pessoal. Existe apenas um .bash_historyarquivo em minha casa.

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

detraveller
fonte

Respostas:

20

Não esqueça que é um arquivo oculto dentro do diretório inicial (você não seria o primeiro a fazer um ls -le pensando que não existe).

Faça o seguinte ...

ls -la ~/ | more

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

vi ~/.bashrc

E simplesmente escreva a seguinte linha nele.

PATH=$PATH:~/bin

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

$cp /etc/skel/.bashrc ~
MangeshBiradar
fonte
OK, entendi agora. Em outros computadores, posso digitar lego e o software é iniciado. No meu sistema, a pasta lego está na minha ~/data/user1/binpasta. Eu adicionei esse caminho ao arquivo .bashrc. Agora, o que tenho que fazer para que, ao digitar lego, inicie o software? Tenho que configurar um alias? Se sim, como? alias lego='<What do i put here???>'
@detraveller Você adicionou ~/data/user1/binà sua variável de ambiente PATH no .bashrcarquivo? (adicione esta linha export PATH=$PATH:~/data/user1/bin:) - nesse caso, você poderá digitar apenas legoo terminal e o programa deverá iniciar.
ácido
Eu adicionei apenas PATH=$PATH:~/data/user1/bin. Você não mencionou exportação, então eu não coloquei lá. Tentarei novamente amanhã quando for para a Uni.
detraveller
Mas eu queria saber como eu digo bash que legoé a palavra que inicia o software?
detraveller
11

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

Ácido
fonte
4

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

Sobre os arquivos de inicialização do Bash

Na seção INVOCATION, man 1 bashdiz:

Quando um shell interativo que não é um shell de login é iniciado, o bash lê e executa comandos de /etc/bash.bashrc e ~ / .bashrc, se esses arquivos existirem.

Observe que esses arquivos de inicialização são opcionais ; O Bash não os exige. O Bash também diferencia entre shells de login e shells interativos. Um shell interativo é definido assim:

Um shell interativo é aquele iniciado sem argumentos de não opção e sem a opção -c cuja entrada e erro padrão estão conectados aos terminais (conforme determinado por isatty (3)) ou um iniciado com a opção -i.

Muitas distribuições obtêm um tipo de arquivo de inicialização do outro, mas algumas não, por isso pode ser difícil resolver canonicamente esse problema. Você precisa examinar todos os seus arquivos de inicialização para ver como e quando ~/.bashrcserão invocados no seu sistema.

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

Se você simplesmente está perdendo um ~/.bashrcarquivo específico do usuário , basta criar um. Isso será chamado pelo Bash para shells que não sejam de login (por exemplo, shells iniciados sem o --loginsinalizador) ou sempre que você forçar o shell a ser interativo, invocando-o com o -isinalizador.

CodeGnome
fonte
0

Se você não tiver um .bashrc, você pode simplesmente criar um e adicionar as linhas que deseja, 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 são detalhadas na bashpágina de manual. Entre man bashem uma linha de comando e procure INVOCATION.


fonte
0

Respostas curtas:

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

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

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

    find ~ -maxdepth 1 -name '.bashrc'

    Procure 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 fará o trabalho mínimo

    ls ~/.bashrc   

    Nota: Caso ~/.bashrcnão exista, você pode criá-lo com um simples echo >> ~/.bashrc.

    O >>criará o arquivo se não existir. Se o ~/.bashrccontrário existir, ele acrescentará apenas a saída inofensiva de vazio echo, evitando uma exclusão não intencional de um arquivo tão crítico, que é aliás difícil de restaurar sem um backup.

    (O seguinte é porque raramente tenho que respeitar o significado do meu apelido, não execute se 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 fazervi ~/.bashrc, a armadilha aqui é que você precisa pressionar:eqsair!

  3. Pasta do aplicativo e$PATH
    Quando você cria uma pasta do aplicativo, por exemplo~/MyNewCoolProgramFolder, a linha abaixo verifica apenas se está na$PATH:

    echo $PATH | grep ~/MyNewCoolProgramFolder

    Você não precisa adicionar se já está lá. Se necessário, você pode adicionar à $PATHcom

    PATH=$PATH:~/MyNewCoolProgramFolder

    e para adicionar essa linha ~/.bashrcse você deseja torná-la permanente.

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

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

    CoolDetraveller: comando não encontrado

    (b) Você pode tentar sua conclusão automática . Comece a escrever CoolDetravellee pressione Tab. Se estiver no, $PATHele será concluído automaticamente (sempre se o preenchimento automático estiver ativado).

    (c) Você pode solicitar que o whichcomando bash shell seja usado se você escrever o comando CoolDetraveller.

        which CoolDetraveller

    Nota: Se no caminho do seu aplicativo houver um ou mais espaços, whichnão será possível encontrar CoolDetraveller, embora (aqui eu honro meu apelido novamente) a conclusão automática de CoolDetravellercomo um parâmetro válido do whichcomando funcione!

    Anúncio nauseam : você não pode perguntarwhereis CoolDetravellerporquewhereis

    tem um caminho codificado, por isso nem sempre é possível encontrar o que você está procurando

Hastur
fonte