쉘 스크립트에서“cd”가 작동하지 않는 이유는 무엇입니까?


766

현재 디렉토리를 내 프로젝트 디렉토리로 변경하는 작은 스크립트를 작성하려고합니다.

#!/bin/bash
cd /home/tree/projects/java

이 파일을 proj로 저장하고에 실행 권한을 추가 chmod하고에 복사했습니다 /usr/bin. 내가 전화하면 : proj아무것도하지 않습니다. 내가 무엇을 잘못하고 있지?


10
교차 사이트 복제 : superuser.com/questions/176783/…
lesmana

앞으로는 항상 pwd마지막 줄에서 테스트 해 볼 수 있습니다 . 따라서 스크립트가 완료되기 전에 작동 여부를 확인할 수 있습니다.
sobi3ch

5
@ lesmana 어떻게 중복입니까?
Aland

@aland OP는 실제로 스크립트를 실행 하지 않기 때문에 작업 디렉토리가 변경되지 않습니다. cd명령은 스크립트 내부에서 잘 작동하므로 직접 시도하십시오.
Alexander Gonchiy

답변:


634

쉘 스크립트는 서브 쉘 내에서 실행되며 각 서브 쉘에는 현재 디렉토리에 대한 자체 개념이 있습니다. 은 cd성공하지만 곧 서브 쉘 종료, 당신은있는 대화 형 쉘 다시 아무것도 이제까지이 변경되었습니다.

이 문제를 해결하는 한 가지 방법은 별명을 대신 사용하는 것입니다.

alias proj="cd /home/tree/projects/java"

7
별칭은 관리하거나 변경하기에 유연하지 않습니다. 많은 'cd'의 경우 스크립트가 더 좋습니다.
Thevs

16
별칭보다 함수가 더 유연하므로 별칭이 충분하지 않으면 다음에 살펴볼 곳입니다.
ephemient

4
MS-DOS에서 스크립트의 동작은 호출 된 스크립트가 호출 명령 쉘의 디렉토리 (및 드라이브)를 변경할 수 있다는 점에 주목할 가치가 있습니까? 그리고 그 유닉스에는이 결함이 없습니까?
Jonathan Leffler

23
Jonathan : 사실이지만 질문과는 관련이 없습니다. SO에 대한 답변은 MS-DOS의 해당 결함을 각각 나열해야 할 경우 두 배 더 길어집니다!
Greg Hewgill

17
이 문제를 해결하는 또 다른 방법은 스크립트 파일을 제공하는 것입니다 : . my-script또는 source my-script.
HelloGoodbye

503

당신은 아무것도 잘못하고 있지 않습니다! 디렉토리를 변경했지만 스크립트를 실행하는 서브 쉘 내에서만 가능합니다.

"dot"명령을 사용하여 현재 프로세스에서 스크립트를 실행할 수 있습니다.

. proj

그러나 나는이 간단한 경우에 별칭을 사용하는 Greg의 제안을 선호합니다.


95
.또한 철자가 source맞습니다. 더 기억에 남는 것을 선택하십시오.
ephemient

47
@Ephemient : 좋은 pointsource 그것이 작동하는 이유를 설명합니다 또한 게으름이 필요하지 않음은 종종 발명의 어머니라는 것을 증명합니다
Adam Liss

8
@ephemient : 소스는 C 쉘과 Bash에서 사용됩니다. POSIX 또는 Korn 쉘 또는 클래식 Bourne 쉘에서는 지원되지 않습니다.
Jonathan Leffler

2
"source"는 Z-shell에서 사용됩니다
Nathan Moos

1
@AdamLiss 훌륭하게 작동하지만 한 가지 단점이 있습니다. 어쨌든 source / dot 명령은 Tab 키로 스크립트 / 명령의 이름을 자동 완성 할 수 없습니다. Tab 키를 사용하여 인수 / 입력을 추가하는 것은 여전히 ​​가능하지만 불행히도 명령 이름을 직접 입력해야합니다. 이 경우 Tab 키를 작동시키는 방법을 알고 있습니까?
Rafal

215

cd스크립트에서 기술적으로 작동 이 스크립트를 실행 한 쉘의 디렉토리를 변경으로,하지만 대화 형 쉘에서 포크 별도의 프로세스이었다.

이 문제를 해결하기위한 Posix 호환 방법 은 쉘 호출 명령 스크립트 대신 쉘 프로 시저 를 정의하는 것 입니다.

jhome () {
  cd /home/tree/projects/java
}

이것을 입력하거나 다양한 쉘 시작 파일 중 하나에 넣을 수 있습니다.


6
나는 이것이 최선의 대답이라고 생각한다. 또한 일부 상황에서는 별칭이 적절할 수 있지만 스크립트에서 cd를 사용하려고 시도하고 다른 것을 추가하려는 경우 별칭이 쓸모가 없습니다.
저스틴 버스 스터

4
이것은 해결책처럼 보입니다! 그리고 나는 그것을 구현하기 위해 노력하고있어,하지만 수행하지 않을 것 :( 여기 내 스크립트입니다 : # / 빈 / bash는 jhome () {에코 "제발"CD / 홈 에코 "작업"} jhome!
겐트 Laborde

1
@GantMan, ~ / .bashrc와 같은 "쉘 시작 파일"에 이것을 추가해야합니다
Jackie Yeh

3
또한 인수 (또는 두 개)를 사용할 수 있습니다.jhome(){ cd /home/tree/projects/$1; }
irbanana

1
이것은 올바른 방법이어야합니다. 예를 들어 "-"와 같은 특수 문자를 사용할 수 있습니다.
bangkokguy

159

cd스크립트의 쉘 내에서 수행된다. 스크립트가 끝나면 해당 셸이 종료되고 현재 디렉토리에 남아있게됩니다. 스크립트를 "소스"로 실행하지 마십시오. 대신에:

./myscript.sh

하다

. ./myscript.sh

(스크립트 이름 앞에 점과 공백이 있습니다.)


2
이것은 시원하며 아마 알 것입니다. 후자는 정확히 무엇을합니까 (어떻게 작동합니까)? 이것은 아마도이 스레드에서 가장 좋은 솔루션 일 것입니다.
요나

2
아담리스 (Adam Liss)의 답변에 대한 의견 섹션에서, 에피 엠은 '.' 입니다. 이 같은 일이source
g19fanatic

1
"소스"는 bashism입니다. 즉, 대시 (/ bin / sh의 데비안 기본값)는 "."을 지원하지 않습니다. 예상대로 작동합니다.
allo

좋은 답변입니다! 또한 myscript.sh$ PATH에 포함 된 디렉토리에 있으면 전체 경로를 지정하지 않고 어디서나 소스를 얻을 수 있습니다.
CodeBrew

이것은 나를 위해 최선을 다했습니다. 이 솔루션은 가장 단순합니다 (+1).
HuserB1989

96

선택 디렉토리로 cd 할 bash 스크립트를 작성하려면 다음을 수행하십시오.

스크립트 파일 작성

#! / bin / sh
# 파일 : / scripts / cdjava
#
CD / home / askgelal / projects / java

그런 다음 시작 파일에 별명을 작성하십시오.

#! / bin / sh
# 파일 /scripts/mastercode.sh
#
별명 cdjava = '. / scripts / cdjava '

  • 모든 별명과 사용자 정의 함수를 덤프하는 시작 파일을 작성했습니다.
  • 그런 다음이 파일을 .bashrc에 소스하여 각 부팅마다 설정하십시오.

예를 들어, 마스터 별명 / 함수 파일을 작성하십시오. /scripts/mastercode.sh
(이 파일에 별명을 입력하십시오.)

그런 다음 .bashrc 파일 의 끝에서 :

소스 /scripts/mastercode.sh



이제 java 디렉토리로 쉽게 CD를 입력 할 수 있습니다. cdjava 만 입력하면됩니다.


2
파일 mastercode.sh#!/bin/sh서브 쉘에서 실행되지 않으며 실행할 수 없으므로 shabang ( )이 필요하지 않습니다 . 그러나 동시에이 파일의 쉘 "flavor"를 문서화해야합니다. 예를 들어 ksh 또는 bash (또는 (t) csh / zsh 등)이며 실제로는 거의 아닙니다 sh. 나는 보통 이것을 알리기 위해 주석을 추가한다. 예를 들어 "이 파일은 쉘 스크립트로 실행되지 않고 소스 파일 (bash에서 제공)을위한 것입니다."
michael

또 다른 팁 (bash의 경우) : 스크립트에서 변수를 사용하는 경우 스크립트가 source(d를 통해 alias) d 가 될 때 해당 변수가 쉘 환경으로 누출됩니다. 이를 피하려면 함수에서 스크립트 작업을 모두 수행하고 스크립트 끝에서 호출하십시오. 함수 내에서 변수를 선언하십시오 local.
Rhubbarb

우분투에서 ~ / .bash_aliases를 작성하십시오 (아직 존재하지 않는 경우). 그런 다음 별칭을 추가하고 터미널을 다시 시작하면됩니다.
Vlad

51

.현재 쉘 환경에서 스크립트를 실행하는 데 사용할 수 있습니다 .

. script_name

또는 더 읽기 쉽지만 쉘 특정 별명 source:

source script_name

이것은 서브 쉘을 피하고 변수 나 내장 (포함 cd)이 현재 쉘에 영향을 줄 수 있도록합니다 .


38

제레미 루텐 (Jeremy Ruten)의 심볼릭 링크 사용에 대한 아이디어는 다른 답변을 넘어 가지 않은 생각을 촉발 시켰습니다. 사용하다:

CDPATH=:$HOME/projects

선행 콜론이 중요합니다. 즉, 현재 디렉토리에 'dir'디렉토리가 있으면 ' cd dir'는 다른 곳을 호핑하지 않고 해당 디렉토리로 변경합니다. 표시된대로 값을 설정하면 다음을 수행 할 수 있습니다.

cd java

그리고 현재 디렉토리에 java라는 하위 디렉토리가 없으면 $ HOME / projects / java로 직접 이동합니다. 별명, 스크립트, 모호한 실행 또는 점 명령이 없습니다.

내 $ HOME은 / Users / jleffler입니다. 내 $ CDPATH는 다음과 같습니다

:/Users/jleffler:/Users/jleffler/mail:/Users/jleffler/src:/Users/jleffler/src/perl:/Users/jleffler/src/sqltools:/Users/jleffler/lib:/Users/jleffler/doc:/Users/jleffler/work

30

사용 exec bash마지막에

bash 스크립트는 현재 환경이나 하위 환경에서 작동하지만 부모 환경에서는 작동하지 않습니다.

그러나 다른 디렉토리에서 bash 스크립트를 실행 한 후 특정 디렉토리에서 (새로운) bash 프롬프트에 남아 있기를 원 하기 때문에이 질문이 종종 제기됩니다 .

이 경우 스크립트 끝에서 자식 bash 인스턴스실행하십시오 .

#!/usr/bin/env bash
cd /home/tree/projects/java
exec bash

16
새로운 서브 쉘이 생성됩니다. 입력 exit하면이 스크립트를 실행 한 쉘로 돌아갑니다.
tripleee

1
스크립트가 여러 번 호출되면 중첩 된 셸이 만들어지고 '종료'를 여러 번 입력해야합니다. 어떻게 든 해결할 수 있습니까?
VladSavitsky

다른 답변보기 : 별칭 사용, "pushd / popd / dirs"또는 "source"사용
qneill

25

사용하여 코드를 작동 시켰습니다.. <your file name>

./<your file name> 터미널에서 디렉토리를 변경하지 않으므로 해당 스크립트와 관련된 디렉토리 만 변경하기 때문에 dose가 작동하지 않습니다.

여기 내 프로그램이 있습니다

#!/bin/bash 
echo "Taking you to eclipse's workspace."
cd /Developer/Java/workspace

여기 내 터미널이 있습니다

nova:~ Kael$ 
nova:~ Kael$ . workspace.sh
Taking you to eclipe's workspace.
nova:workspace Kael$ 

2
사이의 차이가 무엇인가 . something와는 ./something?? 이 답변은 저에게 효과적이며 왜 그런지 이해하지 못합니다.
Dracorat

. something어떤 위치에서든 스크립트를 실행할 수 있습니다 ./something. 파일이 저장된 디렉토리에 있어야합니다.
Projjol


셰방 라인에 점을 넣을 수 있습니까? #!. /bin/bash?
Sigfried


12

쉘 스크립트를 실행하면 해당 쉘 의 인스턴스가 실행됩니다 ( /bin/bash). 따라서 스크립트는 쉘을 시작하고 디렉토리를 변경하고 종료합니다. cd쉘 스크립트 내에서 다른 방법 (및 다른 명령)을 사용하면 해당 스크립트가 시작된 쉘에 영향을 주거나 액세스 할 수 없습니다.


11

내 특별한 경우에 나는 같은 디렉토리를 바꾸기 위해 너무 많은 시간이 필요했다. 그래서 내 .bashrc (우분투 사용)에

1 -

$ 나노 ~. / bashrc

 function switchp
 {
    cd /home/tree/projects/$1
 }

2-

$ 소스 ~ / .bashrc

삼 -

$ switchp 자바

직접 수행 할 작업 : cd / home / tree / projects / java

희망이 도움이됩니다!


1
@WM 프로젝트 트리로 직접 이동하기 위해 매개 변수없이 "$ switchp"을 수행 할 수 있습니다
workdreamer

2
@workdreamer 위에서 설명한 함수 접근 방식은 내 시스템에 동일한 상위 폴더가있는 하위 폴더로 들어가는 데 약간의 문제가 해결되었습니다. 감사합니다.
WM

10

다음을 수행 할 수 있습니다.

#!/bin/bash
cd /your/project/directory
# start another shell and replacing the current
exec /bin/bash

편집 : 이것은 후속 쉘 생성을 막기 위해 '점으로 표시'될 수 있습니다.

예:

. ./previous_script  (with or without the first line)

1
exit예를 들어 쉘을 종료하려면 몇 번 실행 한 후에 다소 혼란스러워집니다. 예를 들어 쉘을 종료하려면 여러 번 (또는 Ctrl + D)해야합니다. 쉘 명령이 디렉토리를 출력하고 CD를 에 출력-alias something = "cd getnewdirectory.sh")
dbr

'exec'에 유의하십시오. 오래된 쉘을 대체합니다.
Thevs

2
exec는 스크립트를 실행 한 쉘이 아니라 cd 명령을 실행 한 서브 쉘 만 대체합니다. 스크립트를 점으로 표시하면 정확합니다.
Jonathan Leffler

문제없이 '점 선화'하십시오. 방금 해결책을 제안했습니다. 시작 방법에 의존하지 않습니다.
Thevs

2
도니는 다르게, 나는 그것이 더 나은에만 cd 명령과 함께 단지에 '점'한 줄의 스크립트를 생각 :) 어쨌든 내 대답을하겠습니다 ... 즉 : 잘못된 바보 같은 질문에 대한 정확한 바보 해답이 될 것입니다
Thevs

7

현재 디렉토리는 동일하게 유지하면서 스크립트 자체의 디렉토리 만 변경합니다.

대신 심볼릭 링크 를 사용할 수 있습니다 . 파일이나 디렉토리에 "바로 가기"를 만들 수 있으므로 다음과 같이 입력하면 cd my-project됩니다.


모든 디렉토리에 해당 심볼릭 링크를 갖는 것은 성가신 일입니다. 심볼릭 링크를 $ HOME에 넣은 다음 'cd ~ / my-project'를 수행 할 수 있습니다. 솔직히 CDPATH를 사용하는 것이 더 간단합니다.
Jonathan Leffler

7

Adam & Greg의 별명과 점 접근 방식을 결합하여보다 역동적 인 것을 만들 수 있습니다.

alias project=". project"

이제 프로젝트 별명을 실행하면 서브 쉘과 반대로 현재 쉘에서 프로젝트 스크립트가 실행됩니다.


이것은 정확히 모든 스크립트를 유지하고 bash에서 호출하고 현재 세션을 유지하는 데 필요한 것입니다. 이것이 완벽한 답변입니다.
매트 닌자

7

별칭과 스크립트를 결합하여

alias proj="cd \`/usr/bin/proj !*\`"

스크립트가 대상 경로를 에코하는 경우. 그것들은 스크립트 이름을 둘러싼 백틱입니다. 

예를 들어, 스크립트는

#!/bin/bash
echo /home/askgelal/projects/java/$1

이 기술의 장점은 스크립트가 여러 명령 줄 매개 변수를 사용하고 복잡한 논리로 계산 된 다른 대상을 방출 할 수 있다는 것입니다.


3
왜? 당신은 사용할 수 있습니다 proj() { cd "/home/user/projects/java/$1"; }=> proj "foo"(또는 proj "foo bar"<= 경우에 당신은 공백이 ...) 또는 (예를 들어) proj() { cd "/home/user/projects/java/$1"; shift; for d; do cd "$d"; done; }=> proj a b c=> 않는 cd/home/user/projects/java/a/b/c
마이클


5

~ / .bash_profile 파일에서 다음 함수를 추가하십시오

move_me() {
    cd ~/path/to/dest
}

터미널을 다시 시작하면 입력 할 수 있습니다

move_me 

대상 폴더로 이동합니다.


3

&& 연산자를 사용할 수 있습니다.

cd myDirectory && ls


공감 : 여기에서 실제 질문에 대답하지 않습니다. 프롬프트에서 두 개의 명령을 실행할 수 있습니다 (두 &&번째를 첫 번째 조건부로 사용 ;하거나 그 사이에 줄 바꿈 또는 새 줄 을 사용하려는 경우).이 명령을 스크립트에 넣으면 "부모 쉘이 왜 사용하지 않습니까? cd실제로 성공 했을 때 새 디렉토리 ? "
tripleee

3

실행하려는 스크립트를 소싱하는 것이 하나의 솔루션이지만이 스크립트는 현재 셸의 환경을 직접 수정할 수 있습니다. 또한 더 이상 인수를 전달할 수 없습니다.

또 다른 방법은 스크립트를 bash에서 함수로 구현하는 것입니다.

function cdbm() {
  cd whereever_you_want_to_go
  echo "Arguments to the functions were $1, $2, ..."
}

이 기술은 autojump ( http://github.com/joelthelion/autojump/wiki) 에서 셸 디렉토리 책갈피 학습을 제공하는 데 사용됩니다 .


3

아래처럼 함수를 만들 수 있으며 .bash_profile원활하게 작동합니다.

다음 함수는 프로젝트 인 선택적 매개 변수를 사용합니다. 예를 들어, 당신은 그냥 실행할 수 있습니다

cdproj

또는

cdproj project_name

함수 정의는 다음과 같습니다.

cdproj(){
    dir=/Users/yourname/projects
    if [ "$1" ]; then
      cd "${dir}/${1}"
    else
      cd "${dir}"
    fi
}

당신의 소스를 잊지 마세요 .bash_profile


1
별칭보다 훨씬 더 나은 답변
Pax0r

이 솔루션은 단순성과 유연성이 뛰어납니다.
Kjartan

3

이것은 당신이 원하는 것을해야합니다. 스크립트 내에서 원하는 디렉토리로 변경 한 다음 새 bash 쉘을 생성하십시오.

#!/bin/bash

# saved as mov_dir.sh
cd ~/mt/v3/rt_linux-rt-tools/
bash

이것을 실행하면 관심있는 디렉토리로 이동하고 종료하면 원래 위치로 돌아갑니다.

root@intel-corei7-64:~# ./mov_dir.sh

root@intel-corei7-64:~/mt/v3/rt_linux-rt-tools# exit
root@intel-corei7-64:~#

종료하면 ( CTRL+ d) 원래 디렉토리로 돌아갑니다.


3
새로운 배쉬를 스폰하면 역사를 잃어 버리고 새로워 질 것입니다.
Tisch

2

LOOOOOng 시간이 지나면 다음을 수행했습니다.

case라는 파일을 만듭니다

파일에 다음을 붙여 넣습니다.

#!/bin/sh

cd /home/"$1"

저장 한 다음 :

chmod +x case

또한 내 별칭을 만들었습니다 .bashrc.

alias disk='cd /home/; . case'

이제 내가 입력하면 :

case 12345

본질적으로 나는 입력하고 있습니다 :

cd /home/12345

'case'뒤에 임의의 폴더를 입력 할 수 있습니다.

case 12

case 15

case 17

입력하는 것과 같습니다.

cd /home/12

cd /home/15

cd /home/17

각기

내 경우에는 경로가 훨씬 길다.이 사람들은 ~ 정보와 함께 요약했다.


1
cd별명의이 불필요하고 우아하다; 별칭은 단순히 '이어야합니다. ~ / case` 대신에. 또한 case예약 된 키워드이므로 이름을 선택하기에는 다소 좋지 않습니다.
tripleee

1

스크립트가 필요 없으며 올바른 옵션 만 설정하고 환경 변수를 작성하십시오.

shopt -s cdable_vars

너의 ~/.bashrc허락하에cd 환경 변수의 내용.

이러한 환경 변수를 작성하십시오.

export myjava="/home/tree/projects/java"

그리고 당신은 사용할 수 있습니다 :

cd myjava

다른 대안들 .


0

당신이 사용하는 경우 물고기를 쉘로서, 가장 좋은 방법은 함수를 만드는 것입니다. 예를 들어, 원래 질문이 주어지면 아래 4 줄을 복사하여 물고기 명령 줄에 붙여 넣을 수 있습니다.

function proj
   cd /home/tree/projects/java
end
funcsave proj

그러면 함수가 생성되어 나중에 사용하기 위해 저장됩니다. 프로젝트가 변경되면 새 경로를 사용하여 프로세스를 반복하십시오.

원하는 경우 다음을 수행하여 기능 파일을 수동으로 추가 할 수 있습니다.

nano ~/.config/fish/functions/proj.fish

그리고 텍스트를 입력하십시오 :

function proj
   cd /home/tree/projects/java
end

마지막으로 ctrl + x를 눌러 종료하고 y 다음에 돌아가서 변경 사항을 저장하십시오.

( 참고 : funcsave를 사용하는 첫 번째 방법은 proj.fish 파일을 만듭니다 ).


0


github.com/godzilla/bash-stuff에서 디렉토리 변경을 관리하기 위해 p라는 간단한 bash 스크립트
가 있습니다. 스크립트를 로컬 bin 디렉토리 (/ usr / local / bin)
에 넣고 넣습니다.

alias p='. p'

.bashrc에


이것은 무엇을 하는가? 재귀 적으로 실행되는 것처럼 보이지만, 실행하기 전에 실행했는지는 확실하지 않습니다.)
Ryan Taylor

0

토론 참고 내가 부모 프로세스의 작업 디렉토리를 설정하는 방법을?

그것은 몇 가지 hackish 답변, 예를 들면 포함 https://stackoverflow.com/a/2375174/755804 (GDB를 통해 부모 프로세스 디렉토리를 변경, 이렇게하지)과 https://stackoverflow.com/a/51985735/755804을 ( cd dirname 을 부모 프로세스의 입력 스트림에 tailcd삽입 하는 명령 ; 이상적으로는 해킹이 아닌 bash의 일부 여야합니다)


0

그것은 오래된 질문이지만, 여기 에이 트릭이 보이지 않는다는 것이 정말 놀랍습니다.

cd 를 사용하는 대신 사용할 수 있습니다

export PWD=the/path/you/want

서브 쉘을 작성하거나 별명을 사용할 필요가 없습니다.

/ path / you / want가 존재하는지 확인하는 것은 귀하의 책임입니다.


불행히도 작동하지 않았습니다.
ttfreeman

0

다른 답변에서 설명한 것처럼 디렉토리를 변경했지만 스크립트를 실행하는 하위 셸 내에서만 . 이것은 상위 쉘에 영향을 미치지 않습니다.

한 가지 해결책은 bash 스크립트 ( ) 대신 bash 함수 를 사용 하는 것입니다 sh. bash 스크립트 코드를 함수에 넣습니다. 그러면 함수를 명령으로 사용할 수있게되며 자식 프로세스없이 실행되므로 모든 cd명령이 호출자 셸에 영향을줍니다.

배쉬 기능 :

bash 프로파일의 한 가지 기능은 응용 프로그램 / 명령을 실행하는 것과 동일한 방식으로 터미널 또는 bash 스크립트에서 실행할 수있는 사용자 정의 기능을 저장하는 것입니다. 이는 긴 명령의 바로 가기로도 사용될 수 있습니다.

함수 효율적인 시스템을 광범위하게 만들려면 여러 파일의 끝에서 함수를 복사해야합니다.

/home/user/.bashrc
/home/user/.bash_profile
/root/.bashrc
/root/.bash_profile

당신은 할 수 sudo kwrite /home/user/.bashrc /home/user/.bash_profile /root/.bashrc /root/.bash_profile편집에 /에서 신속하게 파일을 생성

어떻게 :

bash 스크립트 파일을 bash의 프로파일 파일 끝에서 새 함수 안에 복사하고 터미널을 다시 시작하면 실행 cdd한 함수 또는 작성한 함수 를 실행할 수 있습니다 .

스크립트 예

에 바로 가기 만들기 cd ..cdd

cdd() {
  cd ..
}

바로 가기

ll() {
  ls -l -h
}

바로 가기

lll() {
  ls -l -h -a
}

-2

백 슬래시로 라인을 종료하면 동일한 서브 쉘에서 일부 라인을 실행할 수 있습니다.

cd somedir; \
pwd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.