Como posso predefinir aliases para todos os usuários?

29

Eu tenho o Ubuntu 14.04.2. Eu quero fazer com 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 ter que copiá-los manualmente para os outros usuários. Idealmente, ele deve definir automaticamente esses também para usuários recém-criados.

    
por Brian Sizemore 16.04.2015 / 16:15

3 respostas

39

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

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

    gksu gedit /etc/profile.d/00-aliases.sh
    
  2. Coloque aliases nesse 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. Aproveite!

Algumas notas:

  • /etc/profile é um arquivo global que é executado antes de ~/.profile .
  • /etc/profile.d/ é uma pasta que contém scripts chamados por /etc/profile
  • Quando /etc/profile é chamado (quando você inicia / efetua login em um shell), ele procura por quaisquer arquivos terminados em .sh em /etc/profile.d/ e os executa com um desses comandos:

    source /etc/profile.d/myfile.sh
    
    . /etc/profile.d/myfile.sh
    
  • Estou colocando 00- antes do nome do arquivo para executá-lo antes do restante dos scripts.
  • Você também pode adicionar seus aliases em /etc/profile , mas isso não é recomendado.
por Helio 16.04.2015 / 17:01
4

Um alias só funcionará dentro de um shell. Se você quiser algo tão amplamente acessível quanto um executável, adicione um pequeno script de atalho a /usr/bin , por exemplo:

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

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

Fonte: link

    
por jtpereyda 14.09.2017 / 23:03
0

Como apontado aqui , provavelmente é melhor adicionar aliases globais em /etc/bash.bashrc :

alias foo='bar --baz'
alias baz='foo --bar'

, porque scripts em /etc/profile.d podem ser ignorados para determinados shells (sem login). Levei horas para descobrir por que /etc/profile.d não funcionou.

Ver, por exemplo, link e Entendendo .bashrc e .bash_profile para a distinção entre shells.

    
por tinlyx 14.12.2017 / 00:26