Como definir persistentemente aliases no Terminal

18

Quero adicionar aliases ao meu ambiente para que estejam disponíveis em todas as instâncias do Terminal.

Eu recebi esta resposta :

Sim, você pode colocá-lo em seu .bashrc, .bash_profile ou .profile. Em alguns sistemas, os scripts init do shell também fornecem .bash_aliases ou .aliases; portanto, se um desses arquivos existir no seu sistema, pode fazer sentido usá-los.`

Mas não consigo encontrar nenhum desses arquivos.

(Eu configurei o OS X para ver arquivos ocultos e ainda não vejo nenhum dos itens acima 4.)

Elad Benda
fonte
Os aliases funcionam apenas no shell (no Terminal). O que exatamente você quer dizer com adicionar aliases ao seu ambiente OS X? Deseja tornar um alias acessível a todos os usuários?
nohillside
Eu quis dizer isso será definido para cada instância do terminal eu abrir no futuro
Elad Benda
Reverti sua edição porque mudou o foco da pergunta. Se você ainda está procurando uma resposta sobre como adicionar aliases ao zsh, faça uma nova pergunta.
nohillside

Respostas:

23

Se você usar o bash, adicione os comandos de alias ao ~ / .bashrc e salve um arquivo como este como ~ / .bash_profile:

. ~/.bashrc

Quando o bash é chamado como um shell interativo sem logon, ele lê .bashrc, mas não .bash_profile. Quando o bash é chamado como um shell de logon interativo, ele lê .bash_profile, mas não .bashrc.

O Terminal e o iTerm abrem novos shells como shells de login por padrão, muitos usuários do OS X usam apenas .bash_profile como seu arquivo de configuração pessoal. Por exemplo, tmux e o modo de shell no Emacs abrem novos shells como shells sem login.

.profile também é lido por outros shells como o ksh. Se existirem .bash_profile e .profile, o bash somente lerá .bash_profile quando for chamado como um shell de logon interativo.

Consulte https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html para obter mais informações.

Lri
fonte
3
@EladBenda Se você usar zsh, adicione os comandos de alias para ~/.zshrc. ~/.zshrcé lido por shells (interativos) sem login e login, para que você não precise obtê-lo ~/.zprofile.
Lri
Sempre quis saber a diferença entre .bash_profile e .bashrc, agora eu sei. Obrigado.
Deesbek
Uma opção melhor é manter aliases em um arquivo chamado ~ / .aliases, se você estiver usando oh-my-zsh. Se esse arquivo não existir, ele poderá ser adicionado na pasta inicial e seria um arquivo oculto.
Anusha
6

Abra uma nova janela do Terminal e vá para o seu diretório pessoal (basta digitar cde pressionar Enter).

Depois disso, digite ls .bash*e também ls .profile(observe que cada um desses nomes de arquivo começa com um ponto). Se você possui esses arquivos (e deve ter pelo menos o .profile), precisará editá-los e adicionar seus aliases a eles. Eu uso o VI (ou VIM) para editar esses arquivos, mas você pode usar outro editor (de fato, digitar na janela do Terminal open .bash_profileo abrirá no TextEditor, que pode ser um pouco mais fácil de usar se você não estiver familiarizado com o VI) . Se, por algum motivo, você não tiver nenhum desses arquivos, crie um novo (e chame-o de .bashrc), adicione suas linhas de alias nele (para que este seja um comando por linha, como você os digitaria no shell) e salve o arquivo. Você pode criar links simbólicos para .bash_profile e .profile usando ln -s .bashrc .bash_profile; ln -s .bashrc .profile.

O que normalmente faço é criar links simbólicos .bashrc e .bash_profile para .profile e, em seguida, apenas me preocupar com um arquivo.

A diferença entre esses arquivos é que o bash fornecerá diferentes, dependendo de ter sido iniciado como um shell de login (normalmente um processo de login iniciaria o shell como um shell de login) ou apenas como um shell interativo (mas não de login), ou um shell não interativo. Ter todos os três arquivos essencialmente iguais me dá um ambiente consistente, independentemente de como o bash foi iniciado.

Você obterá mais informações man bash, mas esteja preparado, é uma longa página de manual. Você poderá ver em qual dos três arquivos (.bashrc, .profile e .bash_profile) há origem, dependendo do modo em que o bash foi iniciado.

Espero que ajude - se não, me dê um grito.

Mike
fonte
3

Digite os seguintes comandos no Terminal:

cd /etc
sudo vi bashrc

adicione o seguinte, como:

alias ll="ls -lrt"

Finalmente reinicie o Terminal.

user172265
fonte
2

Se você precisar desta máquina, procure na /etcpasta. No entanto, eles podem não existir por padrão; nesse caso, você simplesmente precisa criá-los na pasta acima e reiniciar o terminal. Você provavelmente precisará usá-lo sudopara criá-los, pois a /etcpasta pertence root.

Se você precisar disso para todos os terminais que abrir, não precisará fazer isso em toda a máquina. Você pode criar esses arquivos em sua própria pasta pessoal e eles serão lidos pelo terminal toda vez que você iniciar uma sessão do terminal.

Também como mencionado nos comentários, geralmente você só poderá vê-los usando terminal e using ls -lha.

BinaryMisfit
fonte
0

se você tiver o ruby ​​instalado, confira este script ruby https://github.com/ytbryan/aka

O script fornece funcionalidades como persistência e fonte automática de arquivos de ponto. Você pode gerenciar aliases via terminal sem interromper seu fluxo de trabalho e abrir um editor de texto.

isenção de responsabilidade: escrevi este script e o uso todos os dias. Deixe-me saber se há algum erro / idéia. :)

ytbryan
fonte
0

Para quem procura o comando ll como no Linux BASH, ele é criado assim ...

alias ll="ls -laF"

Adicione essa linha ao seu .bashrcarquivo, duplique-o .bashrccomo .bash_profilee você terá sempre e sempre.

Pelo que vale, ll no Linux BASH é apenas um pseudônimo de " ls -laF".

Phillip H. Blanton
fonte
-2

Eu tive o mesmo problema, que eu não tinha .bash ou .profile na minha localização de Perfis. finalmente encontrei-o em / etc

Leo Boulanger
fonte
11
/ etc é usado em todo o sistema. Eu recomendo fortemente não editar esses arquivos, mas usar seus próprios arquivos de perfil na sua pasta pessoal, por exemplo, ~ / .bash_profile.
grg
Eu não costumo ter um ~ / .bash_profile, foi a primeira coisa que tentei e se eu criar um, ele não será usado mesmo após uma reinicialização, acredito que meus administradores devem ter evitado isso de alguma maneira. Agora estou usando zsh eo .zshrc funciona bem
Leo Boulanger