2012-10-23 2 views
1

내 경로에 여러 디렉토리를 추가하여 해당 디렉토리의 파일과 그 하위 디렉토리를 세션 전체의 명령 프롬프트에서 사용할 수있게하려고합니다.파일을 모든 곳에서 사용할 수 있도록 경로에 추가 - bash

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/username/OpenFOAM/OpenFOAM-2.1.0/etc/bashrc:/usr/share/texmf-texlive/tex/latex:/etc/crontab:/home/username/Research/Dissertation/wigner/ic/L=lambda:/home/username/Research/Dissertation/wigner/ic/L=2lambda:/home/username/Research/Dissertation/wigner/ic/L=3lambda:/home/username/Research/Dissertation/wigner/ic 

덧붙이 내 .bashrcexport PATH 라인에

/home/username/Research/Dissertation/wigner/ic/L=lambda:/home/username/Research/Dissertation/wigner/ic/L=2lambda:/home/username/Research/Dissertation/wigner/ic/L=3lambda:/home/username/Research/Dissertation/wigner/ic 

follwing을하고 도움이되지 않았다 소싱. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 내가 /home/username/Research/Dissertation/wigner/ic에서 파일에 액세스하려고하면 할 수 없습니다.

여기 몇 편의 게시물을 읽었지만 전혀 도움이되지 않았습니다. 콜론, 세미콜론, 달러 기호가 누락 되었습니까?

+0

호출하려는 파일이 사용자가 실행할 수 있습니까? – choroba

+0

@choroba 아니, 나는 그들을 함께 비교하기 위해 '몽타주 (montage)'를 사용하여 사진 (eps, pngs 등)을 함께 연결하려고합니다. 문제는,이 사진들이 다른 디렉토리에 있다는 것입니다 ... – drN

+0

$ PATH (또는 다른 것)이 바꿀 수있는 것이 아닙니다. – choroba

답변

3

$PATH의 목적을 오해 한 것 같습니다. $PATH은 Bash에게 실행 파일과 스크립트를 어디에서 찾을지를 알려주고 있습니다. 예를 들어,이 명령을 foo라는 이름의 실행 파일에 대한

foo bar.txt 

(보통)를 검색합니다 $PATH,이 명령 :

bash foo.sh 
. foo.sh 

것이다 (보통) foo.sh 검색 $PATHfoo.sh에서가 아니라면 현재 디렉토리; 그러나 이러한 명령 :

cat foo.txt 
vi foo.txt 
less foo.txt 

것이다 하지 검색 $PATHfoo.txt합니다.

또한 "해당 디렉토리와 그 하위 디렉토리에있는 파일"을 쓰지만, $PATH은 하위 디렉토리에는 유용하지 않습니다. 실행 파일 이름에 /이 포함되어 있으면 Bash는 $PATH을 검색하지 않습니다. 예를 들어,이 명령은 :

foo/bar baz.txt 

./foo/bar를 실행하고, 디렉토리 하지 검색 $PATHfoo라는 것입니다. 추가


편집 : 그래서, 대신 무엇을 할 수 있는지. . .

궁극적으로, 당신은 당신의 montage 명령에 디렉토리 정보를 포함해야합니다

cd /home/username/Research/Dissertation/wigner/ic 
montage -geometry +4+4 L=3lambda/three.jpg L=2lambda/two.png output.jpg 

디렉토리 정보는 모든 시간을 입력 할 고통의 너무 많은 경우에는 .bashrc에 자신의 변수를 설정하고 있습니다 그것을 명시 적으로 사용하십시오.당신이 fileglob를 사용할 수

montage -geometry +4+4 $ICL3/three.jpg $ICL2/two.png output.jpg 

을 당신도 해당 파일이있는 서브 디렉토리 기억하고 싶지 않은 경우 :

export IC=/home/username/Research/Dissertation/wigner/ic 
export ICL=$IC/L=lambda 
export ICL2=$IC/L=lambda2 
export ICL3=$IC/L=lambda3 

을 그리고 당신은 쓸 수있다 : 예를 들어, .bashrc가있을 수 있습니다 :

export IC=/home/username/Research/Dissertation/wigner/ic 
export ICLs=$IC/L=lambda* 

및 쓰기 :

montage -geometry +4+4 $ICLs/three.jpg $ICLs/two.png output.jpg 

셸에서 찾을 수 있도록합니다. (다른 subdirectores에있는 파일 사이에 이름 충돌이없는 경우 그러나 물론,이 경우에만 제대로 작동합니다.)

+0

Ok ... 경로에 추가하는 것이 도움이되지 않는다면 ... 어떻게해야합니까? 나는 그들과 나란히 비교하기 위해 몽타주를 사용하여 그림들을 함께 연결하려고합니다 (eps, pngs 등). 문제는,이 그림들이 다른 디렉토리에 있다는 것입니다 ... – drN

+0

@drN : ​​몇 가지 옵션을 제공하기 위해 제 대답을 편집했습니다. – ruakh

+0

젠장, 나는 실제로 $ 논문이라고하는 변수에서'논문 '에 대한 나의 길을 구하기 위해 이것을한다! 고마워, 나는 이것이 효과가있을 것이라고 확신한다. – drN

1

당신은 당신의 .bashrc에 몇 가지 변수를 정의 할 수 있습니다 : 그래서 그 파일을 참조

H="/home/username/Research/Dissertation/wigner/ic"  
oneLam="$H/L=lambda" 
twoLam="$H/L=2lambda" 
threeLam="$H/L=3lambda" 

다음과 같이 어디서든 수행 할 수 있습니다.

[email protected]:/some/horrendously/deep/path/$ vi $twoLam/some_file.txt 
관련 문제