쉘 스크립트로 php를 사용하는 것 어떤가요?

ipes4579의 이미지

스크립트를 써서 여러 프로그램을 All-in-one 으로 간편하게 설정, 빌드 그리고 설치해야 하는 상황입니다.

이제껏 스크립트는 수정만 해 봤지 처음부터 짜본 적은 없는 터라 우선 자료만 수집하고 있습니다.

우선 생각했던 것은 bash 였는데,

네이버의 nForge(kldp.net에서도 쓰이는 협업툴입니다)의 설치 스크립트를 보니

php-cli로 정말 아름답게 짜여져있더군요. 무슨 장점이 있기에 네이버는 php를 이용했을까요?

bash, sh 등의 스크립트와 비교할 때 php는 어떤지 궁금합니다.

winner의 이미지

Web 관련작업도 편할테고요.

lacovnk의 이미지

drush 는 Drupal 관리 위한 쉘스크립트입니다.
http://drush.ws/

mediawiki 에서도 maintenance script 가 php 입니다.
http://www.mediawiki.org/wiki/Manual:Maintenance_scripts

위와 같은 경우, 관리할 어플리케이션과 같은 언어를 이용하기 때문에, 환경을 그대로 갖고와서 쓸 수 있다는 장점이 있습니다.

이외에 설정, 빌드, 설치라면, deploy 툴을 살펴보시면 어떨까요?

vudghkzm의 이미지

php가 command-line 스크립트 언어로 사용되지 말라는 법은 없습니다.

스크립트의 목적, 용도 또는 개발자의 능력, 추가로 플랫폼 환경에 따라서 언어가 결정되는 것입니다.
이러이러한 스크립트는 반드시 저러저러한 언어로 만들어져야 한다는 규칙은 없습니다.

저는 nhn이 nForge 설치 스크립트를 php로 만든 이유를 모릅니다.

sh(그리고 그의 파생 쉘을 포함)에 비해서 php가 가지는 장점은 winner 분께서 말씀해주신바와 같이 풍부한 함수집합을 가지고 있다는 것입니다.

maddie의 이미지

뭐.. 개발자 성향이 아닐까요.
php가 편하면 php로 sh이 편하면 sh로 perl이 편하면 perl로 python이 편하면 python으로..
performance critical한 상황이면 스크립트부터 컴파일 언어까지 여러 고민을 해야겠지만 그런것이 아니라면 개발자가 익숙한 언어가 정답이겠죠.
특히 php나 python같은 아이들은 미션 크리티컬한 부분을 C로 모듈화해서 작업할 수도 있으니 나쁘지 않은 선택이 될수도 있겠죠.

힘없는자의 슬픔

익명 사용자의 이미지

nFORGE뿐만 아니라 nFORGE의 원코드 gForge(현재 FusionForge)및 상당수의 php프레임워크의 쉘스크립트 툴은 php로 되어있습니다.
물론 어떤 부분은 shell스크립트나 python도 같이 섞어쓰고있지만, php를 쓰면 이미 작성된 core패키지의 다른 코드를 그대로 쓸 수 있으니
여러모로 작업이 더 간단해지죠.

이응준의 이미지

제가 nFORGE 인스톨러의 상당 부분을 작성했는데요.
(아마도 아름다운 부분은 wkpark님이 작성하신 부분일듯;;)

nFORGE가 PHP로 작성되어 있으니 기존 코드들을 가져다쓰기 위함이 가장 크고요.
PHP에 익숙할 nFORGE 개발자들을 고려한 것도 있습니다.

사실 PHP가 다른 스크립트 언어들(bash, python, perl, ruby 등)에 비해서는 쉘 스크립트 작성엔 조금 덜 어울린다고 보지만,
그렇다고 PHP로 딱히 하기 힘든 작업이 있는 것도 아니기에 만드는데 무리는 없었습니다.

익명 사용자의 이미지

저는 단 하나입니다.
bash 나 sh 를 제대로 쓸려면 파이프를 써서 여러 GNU util 을 같이 써야 하는데...
이게 OS 배포판이나 버전에 따라 조금씩 다르게 동작을 하는 경우가 종종 있습니다.
그래서 저는 php 로 스크립트를 작성해서 씁니다.
유지보수가 더 편리하다는 장점도 존재하구요.

oneday의 이미지

실제 업무를 예를 들면 상황이 약간 틀려집니다.

php가 처음부터 들어있지 않은 서버도 있고 넣으려고 해도
규정상 넣지 못하는 서버도 있고 hp-ux나 aix에서는 넣기도 쉽지 않고
서버가 설치되는 데이터센터의 룰에 의해 넣지 못하는 경우도 있습니다.

그러니.. 제가 추천 하는 건 거~~~~의 모든 서버에 왠만하면 기본으로
들어가 있는 perl로 작성하는 겁니다.

물론 이전에 있던 곳은 perl도 사용금지라서 ksh로 쌩쇼를 한적도
있습니다. ㅎㄷㄷ

익명 사용자의 이미지

와.. perl도 사용금지라니;; gcc같은 경우는 당연히 금지되어있겠네요...

댓글 달기

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