+6

Shebang (Unix)

1. What is Linux Shell ?

  • Shell là một cầu nối giữa con người với máy tính, nhận những câu lệnh người dùng nhập vào tư bàn phím và chuyển cho nhân của hệ thống thực hiện những câu lệnh đó.

2. What is Shell Script ?

  • Shell Script là tập hợp của các câu lệnh được viết trong một file plaintext.
  • Nếu tương tác trực tiếp với Shell ta chỉ có thể giao tiếp với hệ thống bằng từng câu lệnh một, nhưng khi sử dụng Script ta sẽ thực hiện được những tương tác phức tạp với hẹ thống
  • Giúp tiết kiệm thời gian (trong trường hợp phải dùng lệnh đó nhiều lần thì ta sẽ lưu lại thành một file và sẽ dùng Shell để chạy file đó.)
  • Có thể coi Shell script chính là một computer program được chạy bằng Shell.

Ví dụ:

#!/bin/sh
clear
ls -al

3. How to write shell script

  • Sử dụng vi hoặc vim hay bất kì texteditor nào để tạo Script.
  • Cấp quyền thựi thi cho Script vừa tạo

Examples:

  • $ chmod +x your-script-name

  • $ chmod 755 your-script-name

  • Chạy một Script

    • $ bash bar
    • $ sh bar
    • $ ./bar

4. Shebang

  • Trong lĩnh vực máy tính Shebang (hay sha-bang, hashbang, pound-bang, hash-pling) đó là kí tự

#!

220px-Poundexclam.svg.png

  • Shebang luôn được đặt ở dòng đầu tiên trong mỗi Script.

5. Why Shebang ?

  • Trong các hệ thống nhân Unix, khi một Script được chạy, đầu tiên program loader sẽ dựa vào Shebang để xác định Script đó sẽ được chạy bới trình biên dịch nào

  • Nếu không có Shebang thì mặc định sẽ được chạy bởi shell

    • #!/bin/sh Execute the file using sh, the Bourne shell, or a compatible shell
    • #!/usr/bin/perl -T Execute using Perl with the option for taint checks

6. Portability Shebang

  • Trong trường hợp hệ thống có nhiều version của một chương trình ví dụ ta có: /usr/bin/python, /usr/local/bin/python, hay /home/username/python, hay có thể trên nhiều hệ thống khác nhau thì đường dẫn của python, vì thế có thể hệ thống sẽ không tìm được trình biên dịch Script đó theo Shebang.
  • #!/usr/bin/env ruby dùng để khắc phục vấn đề này, lúc tham số ruby sẽ được pass cho /usr/bin/env lúc này ta không cần biết đường dẫn tuyệt đối của ruby mà sẽ gọi qua /usr/bin/env

7. Cheer

Please give me some feedbacks so that i can better myself.

download.png


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí