2012-10-29 7 views
1

foo.bsh 만 입력하거나 foo.bsh 만 입력하거나 ./foo.bsh 대신 foo를 실행하려고합니다. 이 작업은 디렉토리의 모든 .bsh에 대해 일시적으로하고 싶습니다. 예를 들어, 외부 IP를 에코하기 위해 스크립트를 호출하는 글로벌 Key MYIP를 원합니다. 에코를 덮어 쓰면 배쉬가 부서 질 수 있기 때문에 이것이 의미가 있는지 나는 모른다.bash - 실행 바로 가기

편집 : 더 명확해야합니다. 나는 "foo.exe"가 foo와 함께 실행될 수있는 도스에서와 같이 "./"쓰기 명령 바로 가기를 원한다. foo (ENTER)를 입력하면 현재 디렉토리에서 .bsh 파일을 찾을 수 없습니다.

+0

이 [경로] (HTTP에 디렉토리를 추가 할 마십시오

는 일반적으로 더 나은 솔루션 그래서

~/빈처럼 PATH 뭔가에 실행 파일을 연결하는 단지입니다 /kb.iu.edu/data/acar.html)? – CoffeeRain

+0

모든 .bsh 스크립트가 같은 디렉토리에 있습니까? 또는 전 세계에 주재 할 때 시스템의 모든 .bsh 스크립트를 의미합니까? – Lipongo

답변

3

명령을 찾을 수 없을 때 bash 처리를 연결할 수 있으며 원하는대로 처리 할 함수를 추가 할 수 있습니다. 예를 들어, .bashrc에이를 추가

function command_not_found_handle() 
{ 
    [ -f "${1}.bsh" ] && bash "${1}.bsh" 
} 

을 그래서, 당신은 현재 디렉토리에 foo.bsh이있는 경우, 당신은 단지 "foo는"을 입력 할 수 있으며이 실행됩니다.

편집 : 설명 - 입력 한 명령을 찾기 위해 bash가 내부 메커니즘을 고갈 시키면 명령 이름을 인수로 사용하여 command_not_found_handle() 함수를 실행합니다. 따라서 원하는 로직을 사용하여이 함수를 정의 할 수 있습니다.

+0

우분투 12에서는 command_not_found_handle 함수가/etc/bash의 끝에 나타납니다.bashrc (찾을 수없는 경우 특정 명령을 설치하는 방법을 사용자에게 알려주기 위해). 예를 들어이를 사용할 수 있습니다. 일부 사용자는 이름을 변경하여 사용자 자신의 command_not_found_handle 함수가 실패 할 경우 호출 할 수 있습니다. –

0

당신은

export PATH=$PATH:/your/directory 
나는 보통 ~/bin 디렉토리를 생성

처럼, 당신의 ~/.bash_profile에 페이지를 편집하고 실행 파일 목록의 마지막에있는 디렉토리를 추가하여 달성하고 저장할 수있는 모든 내 이 디렉토리의 실행 파일. 그래서 나는 보통 (+ X 이전에 chmod를 한) 단순히 콘솔에서 이름을 호출하여 작동 내 bin 디렉토리 내 모든 내 스크립트 후 내 ~/.bash_profile을 파일

export PATH=$PATH:/home/yourname/bin/ 

에이 항목을 추가 할 수 있습니다.

도움이 되었기를 바랍니다. 건배

2

정말 그렇게하지 말고 .bashrc 또는 세션에 입력하여 현재 디렉토리를 PATH에 추가하십시오.

PATH=$PATH:. 

당연히 누군가가 비슷한 이름의 명령을 디렉토리에 넣으면 쉽게 실행할 수 있습니다.

cd /shared_directory 
echo "rm -rf all_your_files" > apropo 
chmod +x apropo 

을 그리고 당신은 :

따라서 공격자는 않습니다

cd /shared_directory 
apro<TAB> (completes to apropo) 
(all your files are gone). 

이 경우 사용자는 여기에서 대상 명령을 궁금 때마침 있었다되었다./:

PATH=$PATH:~/bin (in your bashrc or whatever) 
ln -s ~/some_executable ~/bin 
some_executable 
+0

맞아요, 경고를 주셔서 감사합니다 : D – RParadox

+0

+1'.'을'$ PATH'에 넣을 위험이 있습니다. 나는 아주 적대적인 다중 사용자 시스템을 사용 해왔다. –