Note về shell startup files

Có bao giờ bạn gặp phải trường hợp hay băn khoăn với:

  1. Viết command, export ENV, PATH ... tại file này thì nhận, file khác thì ko nhận?
  2. Deploy bằng ssh và thao tác trực tiếp trên server thì thành công, nhưng deploy bằng Capistrano thì tịt? v.v...

Trong lần dính phải bug trước, mình có lang thang google để tìm cách fix, thì có đọc được 1 đoạn nói về shell scripts nào sẽ được load khi ta tương tác với server.

Mình tóm tắt lại vài điều như sau:

  1. Có các loại shell là: login, non-login, interactive và non-interactive.

    • Interactive: Là loại shell mà user có thể tương tác với nó. Ví dụ gõ lệnh $mysql -uuser -p, sau đó nó đợi user nhập pass vào.
    • Non-interactive: là loại shell được chạy bở một process nào đó mà nó ko chờ user nhập input cũng như user ko nhìn thấy output. Ví dụ crontab có lệnh $cd ~/user && ls -al > list_files_and_directories.txt.
    • Login: Là shell được chạy khi user login vào. Ví dụ như chạy câu lệnh $ssh user@abc.com, lúc này các script tương ứng với profile của user sẽ được chạy. Tham khảo ảnh phía dưới.
    • Non-login: Là shell được chạy bởi user X sau khi login, hoặc bất cứ process nào mà ko đi phải được tạo ra bởi user X đã logged in. Ví dụ sau khi user X ssh vào server, chạy lệnh $ls -al hoặc process Z của user Y (ko phải là user X vừa logged in bằng ssh) chạy lệnh $ls -al > list_files_and_directories.txt.
  2. Dựa vào từng loại shell ở trên cũng như tham số đầu vào mà sẽ quyết định file script nào sẽ được load. (trả lời cho câu 1 ở trên)

alt text

  1. Capistrano dùng non-login và non-interactive shell để ssh vào server, nên có những lúc mình đã export ENV variable tại script file rồi mà capistrano vẫn ko nhận, thì có thể là tại nguyên nhân này. (trả lời cho câu 2)

Ref:
Capistrano dùng shell gì?
Sự khác nhau giữa các loại shell

PS: Trước giờ mình cứ nghĩ là shell chỉ có 1 loại như khi mình ssh vào cơ :))))

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

ManhDV

21 bài viết.
34 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
35 6
TL; DR Cấu hình mastermaster trên nhiều node EC2 Mỗi node có nhiều database, với schema giống hệt nhau. Thực hiện điều phối việc read/write b...
ManhDV viết 12 tháng trước
35 6
White
14 0
Background Với những database có lượng read lớn thì tầm quan trọng của việc warmup BP đã được nhắc tới nhiều. Nhưng nó có hiệu quả tới mức như thế...
ManhDV viết 12 tháng trước
14 0
White
14 3
Background Bạn có nhớ gì về hồi cấp 3 ko? Ý mình ko phải là hình ảnh em gái xinh nhất khối mặc áo trong và ngoài có mã màu lần lượt là 000 và fff ...
ManhDV viết 11 tháng trước
14 3
Bài viết liên quan
Male avatar
6 4
Nhân tình cờ thấy khoá học này sắp mở trên Udacity 1] và có bạn hỏi mình cần gì để trở thành DevOps thì mình có ghi lại một số suy nghĩ cá nhân bên...
Thang Man viết hơn 1 năm trước
6 4
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
21 bài viết.
34 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!