/usr/local/bin에 .sh 스크립트를 안전하게 설치하는 방법은 무엇입니까?

/usr/local/bin에 .sh 스크립트를 안전하게 설치하는 방법은 무엇입니까?

Ubuntu 16.04에 다음 스크립트를 올바르게 포함하고 싶습니다. 암호

#!/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

이렇게 했는데 잘못된 것 같아요

  1. sudo vim /usr/local/bin/pdf2eps.sh
  2. 거기에 코드를 복사해서 붙여넣으세요.
  3. sudo chmod 777 /usr/local/bin/pdf2eps.sh
  4. rehash
  5. 스크립트가 pdf2eps.shPATH에 있는 것을 볼 수 있습니다.

난 여기 있는 게 마음에 안 들어

  • vim다음으로 실행sudo
  • 내 안에 있는 다른 것들은 /usr/local/bin/파일 자체가 아니라 내가 여기서 뭔가 잘못하고 있음을 나타내는 심볼릭 링크입니다.

경로에 스크립트를 올바르게/안전하게 추가하는 방법은 무엇입니까?

답변1

vim아무 문제 없이 작동 합니다 sudo. 이는 루트 액세스가 필요한 디렉터리에 파일을 만드는 올바른 방법입니다. 나머지 파일은 링크도 있으니 문제 없습니다. 기분이 나아지면 대신 에서 스크립트를 만들 수 있지만 실제로는 /usr/bin./usr/local/bin파일 시스템 계층 표준:

/usr/local 계층 구조는 소프트웨어를 로컬로 설치할 때 시스템 관리자가 사용합니다. 시스템 소프트웨어가 업데이트되면 덮어쓰지 않도록 해야 합니다. 호스트 그룹 간에 공유할 수 있지만 /usr에는 없는 프로그램 및 데이터에 사용할 수 있습니다.

로컬로 설치된 소프트웨어는 /usr의 소프트웨어를 교체하거나 업그레이드하기 위해 설치하지 않는 한 /usr이 아닌 /usr/local에 있어야 합니다.[28]

따라서 FSH를 팔로우하고 싶다면~해야 한다수동으로 설치한 모든 것을 내려놓으면 /usr/local올바른 일을 한 것입니다.

이제 확장 프로그램이 필요하지 않으면 .sh삭제하면 됩니다. *nix 시스템에서는 작동하지 않습니다.

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

이제 스크립트는 $PATHas 에 위치하게 됩니다 pdf2eps.


그러나 당신이 해야 할 일은 공백이나 다른 이상한 문자가 포함된 파일 이름에서 실행될 경우 스크립트가 실패하도록 하는 몇 가지 문제를 해결하는 것입니다. 다음과 같이 수정합니다.

#!/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"

관련 정보