sh 파일 source ***.sh 로 실행하는것 ./***.sh 실행하는것은 어떠한 차이가 있나요?

heshd의 이미지

안녕하세요 리눅스 왕초보입니다 ㅜ
shell 스크립트를 짜보는 실습을 하다가 어떤 코드(ssh 자동 로그인.. expect 등을 사용합니다) 를 받아서 실행해보려고 하는데

source ***.sh혹은 . ***.sh으로는 실행이 안되고

./***.sh 로만 실행이 되더라구요

어떠한 차이가 있는 것인가요?

김정균의 이미지

./***.sh 로 실행을 하면 child shell을 실행해서 거기서 ***.sh를 실행하는 개념이고요.
source나 '.' 으로 실행을 하면 현재 shell에서 실행을 하게 됩니다. 그러므로 source의 경우에는 bash shell에서의 include 개념으로 많이 사용하곤 합니다.

그리고 안되는 이유는 코드와 에러 메시지를 보여 주셔야 되겠죠. 동일한 결과를 가질 수도 있고 전혀 다른 결과를 가질수도 있기 때문입니다. 차이는 위의 차이라고 보시면 되고요.

그리고 ubuntu의 기본 sh인 dash의 경우에는 bash와는 다르게 동작합니다.

heshd의 이미지

source 로 실행하면 아래와 같은 메세지가 뜨게 됩니다.

spawn: command not found
couldn't read file "{": no such file or directory
No command '-re' found, did you mean:
Command 're' from package 're' (universe)
-re: command not found
exp_send: command not found
exp_continue: command not found
bash: log_backup.sh: line 9: syntax error near unexpected token `}'
bash: log_backup.sh: line 9: `}'

qiiiiiiiip의 이미지

앞에분 설명과 똑같은 내용이지만,
source ***.sh 라고 하면,
***.sh 파일의 내용을 현재 shell에서 그대로 타이핑하는 것과 동일한 효과를 냅니다.
( # 으로 시작하는 라인은 대부분 shell에서 주석 )
현재 shell은 bash로 보이는데 bash에서 인정되지 않는 구문때문에 오류가 났고요.

./***.sh 를 실행하는 경우에는
***.sh 파일의 첫줄에 #! 으로 시작하는 라인이 있을텐데요. ( shabang )
#!/bin/expect 가 있다고 하면 ./***.sh 라고 실행하면
/bin/expect ***.sh 라고 실행하는 것과 동일한 효과입니다.
shabang 라인이 없으면 디폴트쉘인 /bin/sh 이 실행됩니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.