bash 스크립트를 어디에 두어야합니까


15

나는 정기적으로하는 일을 위해 함께 모은 몇 가지 매우 간단한 bash 스크립트를 가지고 있습니다. 그중 하나는 백업 작업을 수행하기 위해 이중성을 실행하는 것입니다. if ..만으로도 현명한 것은 없습니다. 이 스크립트를 sudo로 실행해야하므로 스크립트를 / usr / bin (또는 PATH의 다른 위치)에 넣는 것이 좋습니다.


내가 사용하는 말을 git, 스크립트를하는 버전을 제어처럼 어딘가에 자식 REPOS 당신을 로컬 복사본을 넣어 ~, 다음에 스크립트를 심볼릭 링크 ~/bin.
edwinksl

당신은 의미 git처럼 github구름?
WinEunuuchs2Unix

2
@ WinEunuuchs2Unix 다른 사용자가 스크립트를 사용할 수있게하려면에 넣어야합니다 /usr/local/bin. 그렇지 않으면 그냥 넣는 것입니다 ~/bin. 업그레이드 할 때 두 디렉토리에있는 자체 스크립트는 안전해야합니다.
edwinksl

2
위와 같이 / usr / local / bin에 배치하십시오. 스크립트 이름이 고유하고 기존 Linux 명령 / 이진 이름이 아닌지 확인하십시오. 기존의 리눅스 이름이 숫자로 끝나는 것을 보지 못했기 때문에 내가 만든 스크립트의 끝에 숫자를 추가하십시오. (실제 모호한 사람들은 말할 것도없고 ...
doug

1
@edwinksl 거의 1 년 후 나는 에 저장 될 때와 같이 편집하는 ~/bin데 사용할 필요가 없기 때문에 대부분의 스크립트에 가장 적합한 장소 라고 말합니다 . sudo/usr/local/bin
WinEunuuchs2Unix

답변:


3

에 자체 스크립트를 저장 /opt/scripts합니다.

모든 시스템 사용자가 스크립트를 실행할 수 있어야하는 경우에 대한 심볼릭 링크를 만들 수 있습니다 /usr/bin.

루트 만 스크립트를 실행해야하는 경우에 대한 심볼릭 링크를 만들 수 있습니다 /usr/sbin.

에 심볼릭 링크를 추가하는 명령 /usr/bin/:

ln -s /opt/scripts/<script> /usr/bin/

때문에, 스크립트를 실행할 수 있습니다 /usr/bin/당신에 PATH 기본적으로.


1
충돌을 피하기 위해 파일 시스템 계층 표준-데비안 위키 에 따라 (또는 ) /usr/bin사용자 / 로컬 셸 스크립트의 대상 으로 사용하는 대신 (대부분의 경우 우분투에서 제공하는 스크립트가 우선하도록) 권장합니다. /usr/local/bin/opt/bin
shalomb

대부분의 시스템 에서는 나중에 경로에서와 /usr/local/bin같이을 (를) 재정의 /usr/bin합니다. 이것은 시스템이 파일을 거기에 넣지 않기 때문에 의도적이므로 파일을 거기에 넣을 수 있습니다.이 파일은 시스템이 제공 한 파일보다 우선합니다.
allo

두 답변이 모두 잘 보이지만 올바른 답변으로 표시했습니다. 그 이유는 FHS 문서를 살펴보면서 / opt가 정확히이 목적을 위해 있다는 것을 이해하게되었습니다. 나는 / usr / local / bin의 스크립트에 단순히 sym로 연결되는 아이디어를 좋아합니다. 모든 조언을 주셔서 감사합니다.
hatterman

17

귀하 이외의 다른 사용자가 다음 스크립트를 사용하지 않는 경우 :

그런 다음에 보관할 수 있습니다 /home/$USER/bin. bin폴더가 없으면 폴더를 작성하고 파일을 이동하십시오. 가정의 bin 폴더는 PATH 환경 변수에 자동으로 추가됩니다. 코드는 .profile:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

$ PATH에 / home / username / bin을 추가하는 방법을 참조하십시오 .

또는 일부 시스템에서는 다음과 같은 상태 일 수 있습니다 .bashrc.

export PATH=${HOME}/bin/:${HOME}/.local/bin:${PATH}

eek 고마워

이 스크립트를 다른 사용자가 사용하는 경우 :

그렇다면 /usr/local/bin또는 /opt/bin좋은 옵션입니다. 사용자 정의 Linux 스크립트를 배치하기위한 표준 위치가 있습니까?를 참조하십시오 .

도움이 되었기를 바랍니다


3

로컬 도구 또는 다양한 컴퓨터에 배포하는 것들을 빠르게 수집하는 데 사용하는 디렉토리가 있습니다 /usr/local/apollo. 이이 디렉토리 오프 지점은 flags, binlogs.

기본 apt-get리포지토리 외부에서 다운로드하여 설치 /opt/한 응용 프로그램의 경우 응용 프로그램의 특정 버전에 대한 하위 디렉토리가 하나 더있는 응용 프로그램 이름으로 디렉토리 가 배치됩니다 . 이렇게하면 컴파일 된 버전의 응용 프로그램 이 분산 버전과 같 vlc거나 eclipse충돌하지 않습니다.

내가 사용하는 /opt것은 기본적으로 공식적으로 설계된 방식입니다.

그런데 디렉토리 /usr/local/bin, /usr/local/apollo그리고 /opt살아남 새로운 OS 버전 설치 덮어 쓰기.


1
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin나는 사실 /usr/local/bin이 이미 기억해야 할 하나의 길에 있다는 것을 좋아한다 . 나는 당신의 방법이 /opt/program/version커널 버전에 대해 커널 버전 사이에서 일을 변경하는 EnhanceIO와 같이 컴파일하고 컴파일 할 수있는 방법을 좋아합니다 . 가 /apollo달 착륙 좋아하는 개인 또는 우분투의 의미가 무엇입니까?
WinEunuuchs2Unix

차이 무엇 /usr/local/binusr/local/sbin같은 후자는 업그레이드시 핵 공격 가도록은?
WinEunuuchs2Unix

설치 프로그램은 사용하는 디렉토리를 제거합니다. 편리하게 /usr/local디렉토리를 작성 하지만 디렉토리에는 아무 것도 넣지 않습니다. 이러한 디렉토리는 사용자가 채 웁니다. 저장소 외부의 많은 소스 프로그램은 사용자에게 설치 위치를 선택할 수있는 옵션을 제공합니다. 구성 파일의 기본값은 /usr/local/bin입니다. 따라서 이러한 디렉토리를 사용하는 것이 일반적이기 때문에 기본적으로 사용자 경로에 포함됩니다. 기본적으로 시스템 ~/bin 은 경로를 확인하고 존재하는 경우 경로에 추가합니다.
LD James

~/bin설치 중 또는 부팅 할 때마다 시스템을 검사한다는 의미 입니까? 차이점은 무엇이며 sbin그리고 bin? 그들은 프로그램 유형에 따라 선택하는 준 규칙이 있어야 공존하는 것 같습니다.
WinEunuuchs2Unix

1
@ WinEunuuchs2Unix ~/bin경로에서 ... 설치 중에 추가되지 않습니다. 시스템은 모든 로그인에서이를 확인하고 로그인 중에 존재하는 경우 $ PATH에 추가합니다. ~/.profile설정 의 마지막 두 줄을보십시오 .
LD James
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.