Bash 스크립트를 사용하여 현재 디렉토리를 변경하시겠습니까? [복사]

Bash 스크립트를 사용하여 현재 디렉토리를 변경하시겠습니까? [복사]

bash 스크립트에서 쉘 디렉토리를 변경할 수 있지만 서브 쉘뿐만 아니라 디렉토리 변경 사항을 유지하는 것이 가능한지 궁금합니다.

cdbash 스크립트 내에서 실행하면 디렉터리는 하위 쉘 내에서만 변경되고 종료하면 원래 있던 디렉터리로 돌아간다는 것을 알고 있습니다 .

그러나 특정 디렉터리로 이동하는 명령을 실행하고 싶습니다. 별칭을 사용할 수 있지만 별칭을 만들어야 하는 하위 디렉터리가 많이 있습니다.

답변1

아니요, 스크립트는 별도의 셸에서 실행되며 이는 상위 항목에 영향을 주지 않습니다. 그러나 매개변수와 함께 함수를 사용할 수 있으므로 별칭보다 더 유연합니다. 또 다른 옵션은 source또는 그에 상응하는 를 사용하여 파일을 가져오는 것 입니다 .. 그러나 이는 인수를 허용하지 않습니다. 그래도 현재 쉘에는 영향을 미칩니다. 이 두 기능을 결합하여 가져오려는 파일에 기능을 넣은 다음 현재 프로세스에서 이 기능을 사용할 수 있습니다.

답변2

CDPATH아마도 쉘 변수와 같은 것을 찾고 있을 것입니다 .

변수는 명령 CDPATH처럼 작동합니다 .PATHcd

설정은 다음과 비슷합니다

CDPATH=".:~:~/projects:~/music"

당신이 말하게 만들 것입니다

cd ricky_martin

어느 곳에서든, 어딘가(아마도 )라는 이름의 하위 디렉터리 를 찾을 때까지 값 :에서 -로 구분된 디렉터리 경로를 순차적으로 순회한 다음 거기에서 검색합니다.$CDPATHricky_martin~/music/ricky_martincd

비슷하게

cd world_domination

~/projects/world_domination그러한 하위 디렉토리가 있는 경우 해당 디렉토리로 이동될 수 있습니다. 현재 디렉터리에도 존재하는 경우 해당 디렉터리가 더 일찍 나타나므로 (첫 번째 위치의 점이) world_domination먼저 선택됩니다 .$CDPATH

하는 일도 허용될 것이다

cd proj1/tests

~/projects/proj1/tests그러한 디렉터리가 어디에나 존재하는지 여부를 가져옵니다( 현재 디렉터리나 홈 디렉터리에 존재하지 $CDPATH않는 한 위의 값을 사용).proj/tests

CDPATH일부 스크립트에 심각한 혼란을 줄 수 있으므로 쉘 변수를 내보내면 안 됩니다 .

이 변수는 설명서( ) CDPATH에 설명되어 있습니다 .bashman bash

CDPATH

명령에 대한 검색 경로입니다 cd. 이는 쉘이 명령에 의해 지정된 대상 디렉토리를 찾는 콜론으로 구분된 디렉토리 목록입니다 cd. 샘플 값은 입니다 ".:~:/usr".

관련 정보