cd명령이요

geneven의 이미지

간단하게 cd명령을 구현해 보려고 프로그램을 써서 만들었는데

이상하게 디렉이 안바뀌네요.. chdir함수만 썼는데 또 다른 방법을 써야되는건가요? 미드나잇 커맨드도 이상하게 프로그램으로 폴더 돌아다니다가 종료하면 다시 원래 mc실행했던곳으로 가더라구요... 무슨 문제가..

서지원의 이미지

geneven wrote:
간단하게 cd명령을 구현해 보려고 프로그램을 써서 만들었는데

이상하게 디렉이 안바뀌네요.. chdir함수만 썼는데 또 다른 방법을 써야되는건가요? 미드나잇 커맨드도 이상하게 프로그램으로 폴더 돌아다니다가 종료하면 다시 원래 mc실행했던곳으로 가더라구요... 무슨 문제가..


쉘에서 프로그램을 실행하면, 새 process가 생기고, 그 새 process에서만 디렉토리가 바뀌게 됩니다. parent인 shell의 현재디렉토리는 안바뀌게 되죠.
geneven의 이미지

리눅스에서의 첫 플밍인데,,, 글을 검색했더니 구현이 불가능하다고 되어있는데,,,, - :cry: :cry:

netj의 이미지

geneven wrote:
리눅스에서의 첫 플밍인데,,, 글을 검색했더니 구현이 불가능하다고 되어있는데,,,, - :cry: :cry:

예, 못 만듭니다. :(

cd, export/setenv 등과 같이 별도의 프로그램으로 수행되는게 아니라 셸 내부에서만 돌아가는 명령들이 있지요. 유닉스/리눅스 프로세스의 구조상 별도의 프로그램으로 분리해낼 수 없는 것들이 있습니다. 그냥 간단한 셸을 한번 짜보심이 어떨런지..? :)

cinsk의 이미지

원칙대로라면 child process에서 chdir를 부르고 child process의 current working directory(CWD)를 parent에 반영하는 것은 불가능합니다만,

bash alias와 function을 써서 비슷하게 흉내낼 수는 있습니다.
mc(1)이 이 기능을 써서 mc 안에서 CWD를 변경하고 mc를 종료한 다음에도 그 CWD를 유지할 수 있도록 만들 수 있습니다.

자세한 것은, mc alias('ailas' 명령을 치면 나옴)와, mc-wrapper shell script (대개 /usr/share/mc/bin에 설치)를 참고하기 바랍니다.

eungkyu의 이미지

cinsk wrote:
원칙대로라면 child process에서 chdir를 부르고 child process의 current working directory(CWD)를 parent에 반영하는 것은 불가능합니다만,

bash alias와 function을 써서 비슷하게 흉내낼 수는 있습니다.
mc(1)이 이 기능을 써서 mc 안에서 CWD를 변경하고 mc를 종료한 다음에도 그 CWD를 유지할 수 있도록 만들 수 있습니다.

자세한 것은, mc alias('ailas' 명령을 치면 나옴)와, mc-wrapper shell script (대개 /usr/share/mc/bin에 설치)를 참고하기 바랍니다.

한때 irc에서 어느분이 현재디렉토리 바꾸는 프로그램을 만들수 있다그래서 한참 싸운 기억이 나네요

그분이 증거로 댔던게 mc에서는 되지 않느냐, 그럼 그놈들은 어떻게 만들었냐?
이거였는데, 결국 bash function으로 판명되었습니다 :)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.