Maneira segura de instalar o script .sh em / usr / local / bin?

2

Eu quero incluir corretamente o seguinte script no Ubuntu 16.04. Código

#!/bin/sh
# http://tex.stackexchange.com/a/20886/13173
# $Id: pdf2eps,v 0.01 2005/10/28 00:55:46 Herbert Voss Exp $
# Convert PDF to encapsulated PostScript.
# usage:
# pdf2eps <page number> <pdf file without ext>

pdfcrop $2.pdf
pdftops -f $1 -l $1 -eps "$2-crop.pdf" 
rm  "$2-crop.pdf"
mv  "$2-crop.eps" $2.eps

Aqui o que eu fiz, mas acho que está errado

  1. sudo vim /usr/local/bin/pdf2eps.sh
  2. Copie e cole o código lá.
  3. sudo chmod 777 /usr/local/bin/pdf2eps.sh
  4. rehash
  5. Você vê o script como pdf2eps.sh em seu PATH.

Coisas que eu não gosto aqui

  • execute vim com sudo
  • outras coisas no meu /usr/local/bin/ são links simbólicos, não arquivos propriamente ditos; indicando que estou fazendo as coisas erradas aqui

Como adicionar corretamente / com segurança um script ao seu PATH?

    
por Léo Léopold Hertz 준영 03.05.2016 / 16:46

1 resposta

2

Não há nada errado em executar vim com sudo . Essa é a maneira correta de criar um arquivo em um diretório que precisa de acesso root. Quanto ao resto dos arquivos que existem links, novamente, não é um problema. Se isso faz você se sentir melhor, você pode criar o script em /usr/bin , mas não há absolutamente nada de errado em ter um arquivo regular em /usr/local/bin . De fato, de acordo com o Padrão de hierarquia do sistema de arquivos :

The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is updated. It may be used for programs and data that are shareable amongst a group of hosts, but not found in /usr.

Locally installed software must be placed within /usr/local rather than /usr unless it is being installed to replace or upgrade software in /usr. [28]

Então, se você quer seguir o FSH, você deve colocar qualquer coisa que você instalar manualmente em /usr/local , então você fez a coisa certa.

Agora, se você não quiser a extensão .sh , basta removê-la. Não funciona em sistemas * nix:

sudo mv /usr/local/bin/pdf2eps.sh /usr/local/bin/pdf2eps

Seu script agora estará em $PATH as pdf2eps .

O que você deve fazer, no entanto, é corrigir alguns problemas com o seu script que o façam falhar se for executado em um nome de arquivo com espaços ou outros caracteres estranhos. Modifique-o da seguinte forma:

#!/bin/sh
# http://tex.stackexchange.com/a/20886/13173
# $Id: pdf2eps,v 0.01 2005/10/28 00:55:46 Herbert Voss Exp $
# Convert PDF to encapsulated PostScript.
# usage:
# pdf2eps <page number> <pdf file without ext>

if [ $# -ne 2 ]; then
    echo "Exactly 2 filenames are needed"
    exit 1
fi

pdfcrop "$2.pdf"
pdftops -f "$1" -l "$1" -eps "$2-crop.pdf"
rm  "$2-crop.pdf"
mv  "$2-crop.eps" "$2.eps"
    
por 03.05.2016 / 16:59