Prática recomendada para criar um script personalizado

3

Eu fiz alguns scripts que gostaria de chamar em um terminal com apenas uma palavra (como o outro comando shell tradicional, cd , ls , etc.).

Até agora, descobri que posso colocar os scripts em um dos diretórios apontados pelo caminho do ambiente ( bin diretórios) ou adicionar o diretório do script ao caminho do ambiente.

Aparentemente, o Ubuntu recomenda não modificar nenhum arquivo bashrc . Além disso, os arquivos bashrc parecem chamar apenas bash_aliases , o que, eu acho, é mais para aliases. Além disso, descobri que poderia mudar o caminho de todos os usuários em /etc/environment ou criar um script em /etc/profile.d .

Então, o que eu gostaria de saber é qual é a melhor prática para criar um comando personalizado acessível apenas para um usuário e para todos os usuários? (Use os diretórios bin ou modifique o PATH? Se este último, qual arquivo modifica?)

    
por F.Jean 13.09.2017 / 14:57

2 respostas

7
  

Então, eu gostaria de saber a melhor prática para criar um comando personalizado acessível    para todos os usuários.

/usr/local/bin . Veja o Padrão de Hierarquia do Sistema de Arquivos que o Ubuntu / Linux segue.

  

4.9 / usr / local: hierarquia local

     

4.9.1 Propósito

     

A hierarquia / usr / local é para uso do administrador do sistema ao instalar o software localmente. Ele precisa estar protegido contra sobregravação quando o software do sistema for atualizado. Pode ser usado para programas e dados que são compartilháveis entre um grupo de hosts, mas não encontrados em / usr.

     

O software instalado localmente deve ser colocado dentro de / usr / local em vez de / usr, a menos que esteja sendo instalado para substituir ou atualizar o software em / usr.

     

4.9.2 Requisitos

     

Os seguintes diretórios, ou links simbólicos para diretórios, devem estar em / usr / local

"/usr/local"
bin
games
include
lib
man
sbin
share
src
  

Então, eu gostaria de saber a prática recomendada para criar um comando personalizado acessível somente a um usuário

mkdir $HOME/bin
gedit $HOME/.bashrc

e adicione na parte inferior:

export PATH="$HOME/bin:$PATH"

Se necessário, você também pode definir isso em ~/.profile e em /etc/profile (no entanto, você precisará usar o nome de usuário para criar PATHs específicos).

Exemplo .profile:

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi
    
por Rinzwind 13.09.2017 / 15:14
3

Estou respondendo a pergunta original sobre um comando personalizado (não apenas um script personalizado).

Comando simples - alias

Um comando simples para um único usuário (o usuário atual) pode ser criado como um alias (você mencionou o alias em sua pergunta), por exemplo

alias rm='rm -i'

para tornar o comando de remoção interativo. Isso funciona 'agora' e somente na janela do terminal atual. Você pode salvá-lo em ~/.bashrc próximo aos aliases padrão e ele será ativado em todas as janelas de terminal no futuro e também nas telas de texto.

Por favor, note que os aliases do seu usuário atual não funcionam com o sudo (a menos que você crie um alias para o usuário root também e armazene-o em /root/.bashrc ).

É uma boa ideia fazer backup do (s) arquivo (s) .bashrc antes de editar, apenas no caso, por exemplo

cd
cp -p .bashrc .bashrc.0

Veja também este link, Combine 2 comandos em 1 comando personalizado?

Comando avançado - função ou shellscript

Se você quiser chamar um comando mais avançado, que consiste em várias linhas de comando e / ou usa parâmetros de maneira complicada, você pode usar

  • uma função , que é definida como nos exemplos a seguir

    • ou assim (bash apenas)

      function rmi {
       rm -i
      }
      
    • ou mais geral (também quando o shell é invocado como sh)

      rmi () {
       rm -i
      }
      

    Essa função é ativada como um alias e pode ser armazenada da mesma forma em ~/.bashrc .

  • um shellscript , que é um arquivo de texto com os comandos bash.

    • Se você quiser que apenas o usuário atual use o shellscript, poderá armazená-lo em ~/bin .

      mkdir ~/bin  # create '~/bin', if it is not already created.
      
    • Caso contrário, se você quiser que todos os usuários usem o shellscript, você poderá armazená-lo em um dos diretórios gerais para programas executáveis e scripts, por exemplo /usr/local/bin (ou /usr/local/sbin se o script for executado com sudo ).

      Por favor, verifique com muito cuidado que o shellscript tem um nome único , para que você não 'compita' com (ou, pior ainda, sobrescreva) um programa executável já existente.

por sudodus 13.09.2017 / 15:29