2009-12-08 9 views
0

기본적으로 응용 프로그램을 초기화하고 매개 변수를 설정하는 Bash 스크립트가 있습니다. 이 매개 변수 중 하나는 OpenOffice의 위치입니다. 이제 OpenOffice는 설치시 환경 변수를 설정하지 않습니다.Bash 환경 변수 및 설치 디렉토리 찾기

다음에 I/O를 수행 할 필요가 없도록 설치된 응용 프로그램의 위치를 ​​찾고 해당 정보를 캐싱하는 가장 좋은 방법은 무엇입니까?

내가 생각한 이유는 단순히 특정 파일이있는 OpenOffice 디렉토리에 대해/usr /에 대한 검색을 실행하는 것이 었습니다. 발견되면 해당 디렉토리를 환경 변수에 저장하고이 스크립트에서 환경 변수가 설정되어 있는지 확인하고 디렉토리라면 다시 사용하지 않으면 사용합니다.

이렇게하면 스크립트가 사용자의 개입없이 작동 할 수 있지만 환경 변수이므로 사용자가 경로를 직접 설정할 수도 있습니다.

이것은 "나쁜 습관"처럼 보이므로 다른 누군가가 소프트웨어 설치에 대한 정보를 얻는 일반적인 방법을 제공 할 수 있기를 바랍니다. 도움이된다면, OpenOffice는 아마도 aptitude을 사용하여 설치 될 것입니다.

답변

1

나는 보통이 다 봤어요 방법은이 같은 일부 코드입니다 :

[ -z "$OO_EXE" ] && OO_EXE=/usr/bin/oo # or whatever the executable is called 

그럼 당신은 항상 OO_EXE 환경 변수가 스크립트에서 나중에 설정되어 있다고 가정 할 수 있습니다. 사용자는 스크립트를 실행하기 전에 환경에 OO_EXE을 설정하여 기본값을 무시할 수 있지만 스크립트가 실행되지 않은 경우 스크립트는 기본값으로 되돌아갑니다.

처음 스크립트가 실행될 때 동적으로 기본값을 찾고 매번 다시 사용하려면 스크립트를 처음 실행할 때 사용자에게 경로를 묻는 메시지를 표시하고 사용자의 점 파일을 삭제하십시오 홈 디렉토리 및 그 파일에서 매번 읽을 수 있습니다.

+0

멋진 아이디어. 이 스크립트는 데몬 실행을 처리하는 /etc/init.d 스크립트입니다. 처음으로 달릴 때 그런 종류의 질문을해야하는 것이 일반적인 관행입니까? 데몬을 설치할 때이 정보를 묻는 것이 좋을까요? – William

+0

그래, 나는 그들이 데몬을 설치하는 것이 좋은 생각이라고 생각한다. init.d 스크립트의 프롬프트는 너무 좋지 않습니다. 데몬이기 때문에, 사용자의 홈 디렉토리가 아닌/etc에 설정 파일을 놓는 것이 더 나을 것입니다. –

+0

실제로 또 다른 질문입니다. 패키징 시스템 (예 : aptitude 또는 yum)을 사용하여 응용 프로그램을 설치하면 패키지가 다른 패키지에 종속됩니다. 패키지에 이미 파일이 있다고 표시되면 파일의 위치를 ​​어떻게 알 수 있습니까? 패키지가 배포판을 기반으로 다른 디렉토리에 설치되었다고 생각됩니다. 잘못된 것일 수 있습니다. 사용자가 입력을 요청하지 않으면 기본값을 확인합니까? 이 답변을 알지 못할 수도 있지만 도움이된다면 도움이 될 것입니다. :) – William

1

많은 응용 프로그램은 설치시 이러한 값을 설정합니다. 예를 들어 사용자가 앱의 configure 스크립트를 실행하면 사용자는 ooffice의 위치를 ​​지정할 수 있습니다. 스크립트는이 값을 사용하거나 사용자가 지정하지 않을 경우 기본값을 사용하려고 시도합니다. 앱이 설치되면 하드 코딩 된 값을 갖게됩니다.

+0

+1. 내가이 일을 끝내는 것처럼 보입니다. 도움을 주셔서 감사합니다! – William