Como posso predefinir aliases para todos os usuários?

38

Eu tenho o Ubuntu 14.04.2. Quero torná-lo para que todos os usuários tenham automaticamente um conjunto específico de aliases. Eu tenho meus aliases definidos no meu .bashrc pessoal, mas não quero copiá-los manualmente para os outros usuários. Idealmente, também deve configurá-las automaticamente para usuários recém-criados.

Brian Sizemore
fonte
11
Por "predefinição", você quer dizer que todos os novos usuários sejam criados com certos aliases, que eles podem reconfigurar facilmente? Ou você quer criar aliases globais, para que todos os usuários os tenham o tempo todo (e possam redefini-los / defini-los ... mas não os vejam quando examinarem seus próprios arquivos de configuração, que podem encontrar confuso)? Ou alguma outra coisa? Relacionado: Undertanding .bashrc e .bash_profile (apesar de seu título ímpar, acredito que essa pergunta e essa sejam realmente muito semelhantes).
Elias Kagan

Respostas:

50

Você pode criar um script /etc/profile.d/para criar aliases para todos os usuários:

  1. Crie um arquivo chamado 00-aliases.sh(ou qualquer outro nome sofisticado) em /etc/profile.d:

    gksu gedit /etc/profile.d/00-aliases.sh
    
  2. Coloque seus apelidos neste arquivo. Exemplo:

    alias foo='bar --baz'
    alias baz='foo --bar'
    
  3. Salve o arquivo

  4. Reinicie todos os terminais abertos para aplicar as alterações.
  5. Apreciar!

Algumas notas:

  • /etc/profileé um arquivo global que é executado antes ~/.profile.
  • /etc/profile.d/ é uma pasta que contém scripts chamados por /etc/profile
  • Quando /etc/profileé chamado (quando você inicia / faz login em um shell), ele pesquisa todos os arquivos que terminam .shem /etc/profile.d/e os executa com um destes comandos:

    source /etc/profile.d/myfile.sh
    

    . /etc/profile.d/myfile.sh
    
  • Estou colocando 00-o nome do arquivo antes de executá-lo antes do restante dos scripts.
  • Você também pode adicionar seus aliases /etc/profile, mas isso não é recomendado.
Helio
fonte
2
Funciona perfeitamente! Você pode me dar uma breve explicação sobre qual é o objetivo do /etc/profile.d?
Brian Sizemore
11
@BrianSizemore: Atualizei minha resposta com algumas explicações. Você tem mais alguma dúvida?
Hélio
11
Isso explica muito bem. O esclarecimento me ajuda a desenvolver outros usos também. Obrigado por toda a ajuda!
precisa
4
O método nesta resposta não deve ser usado. Os aliases nos .sharquivos em /etc/profile.d/(ou /etc/profile) serão definidos apenas para shells de logon e não funcionarão em shells interativos de não logon. Diferentemente das variáveis ​​de ambiente, o bash não pode exportar aliases para processos filho, nem mesmo shells bash filho. Esse método pode parecer funcionar corretamente se for testado apenas em shells de logon, como o shell original obtido ao fazer logon em um console virtual ou via SSH, mas falha nos shells filhos e também nos shells iniciados pelas janelas do terminal da GUI.
Eliah Kagan 18/04/2015
2
@ Helio Minha resposta para Undertanding .bashrc e .bash_profile fornece dois outros métodos, dependendo do objetivo, juntamente com explicações detalhadas. Não tenho certeza se essa ou aquela pergunta pode ser considerada uma duplicata. Comentei esta questão para obter esclarecimentos do OP sobre suas necessidades. Essa pergunta tem um escopo mais restrito do que a pergunta, então suponho que não há problema em eu postar uma resposta curta aqui, cobrindo parte do material da minha longa. (Por agora, eu estou na esperança de obter uma resposta do OP ao meu comentário.)
Elias Kagan
5

Um alias só funcionará enquanto estiver dentro de um shell. Se você deseja algo tão acessível quanto um executável, pode adicionar um pequeno script de atalho para /usr/bin, por exemplo:

#!/bin/sh
ls -l "$@"

A "$@"passa todos os argumentos até o executável. O nome do script será o nome do executável.

Fonte: https://unix.stackexchange.com/a/52509/15954

jtpereyda
fonte
Esta resposta parece não ter relação. A resposta aceita responde corretamente à pergunta enquanto isso parece fornecer uma solução alternativa.
Brian Sizemore 14/09
3
@BrianSizemore Eu tive sua mesma pergunta, mas me deparei com esta solução que era mais apropriada no meu caso; espero que ajude outras pessoas em uma situação semelhante. Para muitas pessoas, o apelido vai ficar bem.
Jtpereyda # 14/17
11
@BrianSizemore Esta resposta esclarece um equívoco comum (que eu também tive) e é útil e diretamente relacionado.
a20
0

/ etc / bashrc

  • Funções e aliases em todo o sistema
  • O material do ambiente entra em / etc / profile

NÃO é uma boa ideia alterar esse arquivo, a menos que você saiba o que está fazendo. É muito melhor criar um script de shell custom.sh em /etc/profile.d/ para fazer alterações personalizadas em seu ambiente, pois isso evitará a necessidade de mesclagem em futuras atualizações.

CentoS
fonte