As variáveis e os aliases pertencem à mesma categoria?

1

Esta é uma questão de terminologia / arquitetura.

Algumas das implementações mais básicas para facilitar o controle de um sistema são variáveis e aliases (e algumas podem adicionar links simbólicos).

Ambas as variáveis e links simbólicos "ficam no segundo plano" e podem ser chamadas pelo usuário (eu acho que "expandido" é bom para ambos).

Eu pergunto se variáveis e aliases estão na mesma categoria porque eu quero nomear melhor um arquivo que contenha uma lista deles (a primeira parte é de variáveis, a segunda parte é de aliases que alguns deles utilizam algumas variáveis).

Em vez de algo geral como "background_data.sh", gostaria de fornecer um nome mais "padrão", algo que possa se assemelhar a um grupo ou categoria que ambos possam compartilhar.

    
por user273620 03.02.2018 / 02:03

3 respostas

2

A "categoria" em que aliases, funções, variáveis etc. se enquadram é environment , como em "shell environment".

Variáveis e aliases são muito diferentes, assim como links simbólicos (que não são parte do ambiente shell, mas coisas no sistema de arquivos, independente do shell).

  • Uma variável, seja uma variável de shell ou uma variável de ambiente, contém dados na forma de strings.

  • Um alias é um atalho prático para você usar em sessões de shell interativas para economizar na digitação de comandos repetidos com frequência. Os aliases são expandidos em um estágio de avaliação separado das variáveis. Observe que, em scripts, você provavelmente desejará usar funções em vez de aliases, pois são mais do que simples substituições de texto dos nomes de comandos 1 .

  • Um link simbólico é um tipo especial de arquivo no sistema de arquivos que é automaticamente resolvido para um caminho quando acessado (livremente).

Quanto ao que chamar seu arquivo; soa como um arquivo que deve ser originado (através de . em qualquer shell sh -like ou com source em shells com esse comando) para configurar um ambiente para algum aplicativo ou processo, então Eu poderia sugerir algo como application-name.env ou process-name.env , possivelmente?

1 Aliases em scripts é um problema para mim. Aliases, como eu disse, são para conveniência em shells interativos, onde se pode sempre adicionar o -F flag a ls e, portanto, definir alias ls='ls -F' ou algo similar. Nos scripts, porém, você gostaria de ser mais detalhado. Há pelo menos duas razões para isso (as opiniões pessoais seguem):

  1. Dizer cp ou rm em um script deve fazer exatamente isso . Comandos padrão não devem ser substituídos por aliases em scripts, ou eles serão extremamente problemáticos para depurar.

  2. Os alias são para uso na linha de comando interativa (você os digita uma e outra vez, para velocidade e / ou para salvar seus dedos e mãos). Um script é escrito uma vez (e possivelmente melhorado). Isso permite que você escreva o roteiro de modo que possa ser facilmente lido e compreendido pelos outros (ou por você mesmo em algumas semanas), o que significa que você pode se permitir ser mais detalhado ao escrever um roteiro. O benefício é a manutenção.

  3. Um alias não pode receber argumentos, pelo menos não da mesma maneira que uma função pode. Isso torna as funções muito mais versáteis que os aliases. Em vez de aliasing um comando, você faz uma função que não só chama o utilitário, verifica se os argumentos estão corretos antes de chamá-lo e se o resultado volta como esperado, por exemplo. Uma função poderia até mesmo fazer sua própria análise de linha de comando, se assim desejar, e poderia, dessa forma, servir como seu próprio "utilitário" dentro do script.

Estou escrevendo alguns dos meus scripts em projetos onde muitas pessoas estão envolvidas, para o trabalho, então essa é a minha perspectiva.

    
por 03.02.2018 / 08:05
0

A diferença sendo explicada nas outras respostas, eu acho que para o seu propósito, a extensão do arquivo rc seria adequada :

It is used for any file that contains startup information for a command.

Ele vem em diferentes tipos, como <appname>rc , <appname>.rc ou <appname>-rc . Exemplos bem conhecidos são /etc/inputrc , ~/.bashrc e ~/.vimrc .

    
por 03.02.2018 / 11:50
0

Um alias é tecnicamente uma definição usada pelo interpretador de comandos. Ambos definindo uma variável e definindo um alias seria uma forma de atribuição .

Embora você possa definir, gravar, remover e excluir aliases, eles são, no entanto, semanticamente distintos das variáveis no shell, pois são globais e fazem algo diferente de armazenar um valor.

    
por 03.02.2018 / 07:46