mkdir와 cd를 동시에 하는 명령어를 만들려고 하는데 뭔가 잘 안됩니다.
#!/bin/bash # mkdircd.sh mkdir $1 && cd $1
위와같은 스크립트를 실행하면 mkdir만 되고 cd가 안됩니다.
mkdir $1 && cd $1 && pwd
이렇게 바꿔보고 ./mkdircd.sh 실행해보세요.
내용을 확인해보시면 감이 오시겠지만, cd는 됩니다만, mkdircd.sh의 내용을 실행하는 셸과 현재 사용자의 명령을 실행하는 셸이 서로 다르고, 둘 간의 환경 변수나 기타 사항이 공유가 되지 않기 때문에 원래 사용자의 명령을 실행하던 셸에서는 변화가 없는 것입니다.
. ./mkdircd.sh
이렇게 실행하시면 명령을 실행하던 셸이 mkdircd.sh의 내용을 자기가 실행합니다.
mkdircd라는 이름의 스크립트파일을 ~/bin에 놓고
$ . ~/bin/mkdircd /tmp/test
라고 실행하면 되긴 되는데 그래도
$ mkdircd /tmp/test
처럼 실행해서 됬으면 하는 바램이 있습니다. . ~/bin/mkdircd는 너무 길고 웬지 부자연스럽고 이걸 alias로 줄일 수 있기는 하지만 그래도 웬지 개운하지 않고 뭔가 찜찜한....
원 질문과는 별개의 문제입니다.
export PATH=$PATH:$HOME/bin
이런 식으로 해서 (~/.bash_profile 에 넣어두면 좋겠죠) PATH를 추가하면 됩니다.
PATH에 넣어두시고
. mkdircd foo/
이렇게 하시는 수는 있습니다만, 새 셸이 생성되는 것을 막으려면 아마 이 수나 source를 쓰는 수 밖에 없을 것입니다. 새로 프로그램이라도 짜지 않는 이상요.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
. ./mkdircd.sh
mkdir $1 && cd $1 && pwd
이렇게 바꿔보고 ./mkdircd.sh 실행해보세요.
내용을 확인해보시면 감이 오시겠지만, cd는 됩니다만, mkdircd.sh의 내용을 실행하는 셸과 현재 사용자의 명령을 실행하는 셸이 서로 다르고, 둘 간의 환경 변수나 기타 사항이 공유가 되지 않기 때문에 원래 사용자의 명령을 실행하던 셸에서는 변화가 없는 것입니다.
. ./mkdircd.sh
이렇게 실행하시면 명령을 실행하던 셸이 mkdircd.sh의 내용을 자기가 실행합니다.
mkdircd라는 이름의
mkdircd라는 이름의 스크립트파일을 ~/bin에 놓고
라고 실행하면 되긴 되는데 그래도
처럼 실행해서 됬으면 하는 바램이 있습니다. . ~/bin/mkdircd는 너무 길고 웬지 부자연스럽고 이걸 alias로 줄일 수 있기는 하지만 그래도 웬지 개운하지 않고 뭔가 찜찜한....
이건 PATH 문제
원 질문과는 별개의 문제입니다.
export PATH=$PATH:$HOME/bin
이런 식으로 해서 (~/.bash_profile 에 넣어두면 좋겠죠) PATH를 추가하면 됩니다.
PATH에 넣어두시고 .
PATH에 넣어두시고
. mkdircd foo/
이렇게 하시는 수는 있습니다만, 새 셸이 생성되는 것을 막으려면 아마 이 수나 source를 쓰는 수 밖에 없을 것입니다. 새로 프로그램이라도 짜지 않는 이상요.
댓글 달기