[완료] mkdir와 cd를 동시에 하는 방법

dl3zp3의 이미지

mkdir와 cd를 동시에 하는 명령어를 만들려고 하는데 뭔가 잘 안됩니다.

#!/bin/bash
# mkdircd.sh
mkdir $1 && cd $1

위와같은 스크립트를 실행하면 mkdir만 되고 cd가 안됩니다.

Prentice의 이미지

mkdir $1 && cd $1 && pwd

이렇게 바꿔보고 ./mkdircd.sh 실행해보세요.

내용을 확인해보시면 감이 오시겠지만, cd는 됩니다만, mkdircd.sh의 내용을 실행하는 셸과 현재 사용자의 명령을 실행하는 셸이 서로 다르고, 둘 간의 환경 변수나 기타 사항이 공유가 되지 않기 때문에 원래 사용자의 명령을 실행하던 셸에서는 변화가 없는 것입니다.

. ./mkdircd.sh

이렇게 실행하시면 명령을 실행하던 셸이 mkdircd.sh의 내용을 자기가 실행합니다.

dl3zp3의 이미지

mkdircd라는 이름의 스크립트파일을 ~/bin에 놓고

$ . ~/bin/mkdircd /tmp/test

라고 실행하면 되긴 되는데 그래도

$ mkdircd /tmp/test

처럼 실행해서 됬으면 하는 바램이 있습니다. . ~/bin/mkdircd는 너무 길고 웬지 부자연스럽고 이걸 alias로 줄일 수 있기는 하지만 그래도 웬지 개운하지 않고 뭔가 찜찜한....

eezen의 이미지

원 질문과는 별개의 문제입니다.

export PATH=$PATH:$HOME/bin

이런 식으로 해서 (~/.bash_profile 에 넣어두면 좋겠죠) PATH를 추가하면 됩니다.

Prentice의 이미지

PATH에 넣어두시고

. mkdircd foo/

이렇게 하시는 수는 있습니다만, 새 셸이 생성되는 것을 막으려면 아마 이 수나 source를 쓰는 수 밖에 없을 것입니다. 새로 프로그램이라도 짜지 않는 이상요.