Sự khác biệt giữa ~ / .profile và ~ / .bash_profile là gì?


Câu trả lời:


44

Đây .profilelà cấu hình cấu hình ban đầu cho shell Bourne (aka, sh). bash, là một vỏ tương thích Bourne sẽ đọc và sử dụng nó. Mặt .bash_profilekhác chỉ được đọc bởi bash. Nó được dành cho các lệnh không tương thích với shell Bourne tiêu chuẩn.


Nếu tôi sai, hãy sửa cho tôi .. .profile được sử dụng bởi bất kỳ shell tương thích Bourne nào trong khi .bash_profile chỉ được sử dụng bởi bash .. tôi có đúng không?
lakesh

2
@lakesh: Có, bất kỳ shell nào cung cấp khả năng tương thích bourne sẽ đọc .profile. Ví dụ, bashkshnhưng không cshhoặc tcsh. Và zshcung cấp cả hai shcshkhả năng tương thích để nó sẽ đọc cả .profile.login, cũng như zshcác tệp chấm cụ thể.
bahamat

Có hướng dẫn nào để đọc về công cụ bash và ksh này không? chưa bao giờ nghe về những điều này trước đây ...
lakesh

4
Bạn có thể bắt đầu với Lịch sử Shell UNIX .
bahamat

25

Các shnguồn gốc ban đầu .profilekhi khởi động.

bashsẽ cố gắng tìm nguồn .bash_profileđầu tiên, nhưng nếu điều đó không tồn tại, nó sẽ nguồn .profile1 .

Lưu ý rằng nếu bashđược bắt đầu dưới dạng sh(ví dụ: /bin/shliên kết đến /bin/bash) hoặc được bắt đầu bằng --posixcờ, nó sẽ cố gắng mô phỏng shvà chỉ đọc .profile.

Chú thích:

  1. Trên thực tế, một trong những đầu tiên của .bash_profile, .bash_login,.profile

Xem thêm:


2
Tuyệt vời .. Cảm ơn ... đặc biệt là cho các tài liệu tham khảo ...
lakesh

10

Bạn biết nhiều shell tồn tại trong thế giới UNIX, nhưng hầu hết trong số chúng là:

  • Vỏ Bourne : /bin/sh(Nhà phát minh: Stephen Bourne)
  • BASH (Bourne Again Shell): /bin/bash(Nhà phát minh: Brian Fox, thuộc dự án GNU) (shell mạnh mẽ)
  • C shell : /bin/csh(Nhà phát minh: Bill Joy, Nhà phát minh ngăn xếp TCP / IP)
  • Vỏ Korn : /bin/ksh(Nhà phát minh: David Korn thuộc Bell Labs)
  • Vỏ Z : /bin/zsh(Vỏ mạnh mẽ)
  • Vỏ TENEX C : /bin/tcsh(có nguồn gốc từ C Shell)
  • Shell shell Almquist : /bin/dash(Bắt nguồn từ shell Almquist (tro trong dự án NetBSD)) (Dash sinh ra từ lenny)

Nhưng câu hỏi của bạn là về ~/.bash_profile~/.profile:

Khi bạn đăng nhập vào máy UNIX, nó sẽ chuyển hướng đến thư mục chính của bạn, theo trình bao được chọn bởi quản trị viên trong trường cuối cùng /etc/passwdnhư:

mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash

Shell của bạn chạy và theo mặc định, mỗi shell có một tập tin được đặt cho loginlogout. Khi bạn đăng nhập vào bash, ~/.profileđược chạy và khi bạn logout, ~/.bash_logoutđược chạy. ~/.bash_historytập tin giữ lệnh đầu vào của bạn.

Tập tin khởi tạo trong mỗi shell

Vỏ TENEX C

  • ~/.login Khi bạn đăng nhập
  • ~/.logout Khi bạn đăng xuất
  • ~/.tcshrcgiống như ~./bashrctrong bash

Bạn có thể đặt biến $histfilelà tên của tệp lịch sử và biến $historylà số lệnh cần giữ.

Vỏ Z

Quả thực đó là lớp vỏ mạnh mẽ và nếu bạn có thời gian rảnh, hãy chắc chắn di chuyển đến nó.

Ngoại trừ shell khác, shell Z có nhiều tệp cấu hình và tệp khởi tạo, chỉ cần tôi viết:

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin

Lưu ý: nếu $ZDOTDIRkhông đặt, đặt nhà.

Vỏ C

Lưu ý: Vỏ TENEX C được rẽ nhánh từ vỏ C. Vỏ C hỗ trợ bởi BSD. Nếu bạn quen thuộc với lập trình ngôn ngữ C, bạn nên thoải mái vì cú pháp của nó tương tự nhau.

~/.login
~/.cshrc
~/.logout

Lưu ý: csh đã cũ. Sử dụng tcsh thay thế.

Vỏ Korn

  • ~/.profile
  • tập tin RC: người dùng xác định
  • tệp đăng xuất: Không áp dụng

Bourne Again SHell (BASH)

Nó rất mạnh mẽ và được sinh ra trong dự án GNU và được chia rẽ bởi Bourne Shell.

~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history

Khi bạn đăng nhập, bash chạy ~/.bash_profile~/.bash_profilechạy ~/.bashrc. Quả thực ~/.bashrckhông phải là tập tin khởi tạo bash, vì bash không chạy nó.

Vỏ Bourne

Nó chết rồi. Ngay cả khi bạn sử dụng man sh, bạn thấy hướng dẫn sử dụng dash. [Ghi chú của biên tập viên: bit về dashchỉ áp dụng cho các bản phân phối dựa trên Debian và Debian như Ubuntu.]

câu trả lời của bạn

~/.bash_profilelàm việc theo bash, nhưng ~/.profilelàm việc dưới vỏ Bourne và Korn.


2
Chet Ramey là nhà phát triển chính cho Bash.
tripleee

4

Một shell đăng nhập chỉ đơn giản là một shell bạn có thể đăng nhập như thông qua ssh hoặc tại giao diện điều khiển. Một vỏ không đăng nhập là một vỏ mà ai đó cũng không thể đăng nhập. Một vỏ không đăng nhập thường được sử dụng bởi các chương trình / dịch vụ hệ thống.

Đối với điểm thứ ba của bạn. Đó là sự thật .bashrcđược thực thi trên mỗi phiên bản của shell. Tuy nhiên .bash_profilechỉ được sử dụng khi đăng nhập. Do đó, lý do cho hai tập tin riêng biệt.

.profiledành cho những thứ không liên quan cụ thể đến Bash, như biến môi trường $ PATH, nó cũng sẽ có sẵn bất cứ lúc nào. .bash_profileđặc biệt dành cho shell đăng nhập hoặc shell được thực thi khi đăng nhập.


sự khác biệt giữa ~ / .profile và ~ / .bash_profile?
lakesh

2
.profile dành cho những thứ không liên quan cụ thể đến Bash, như biến môi trường PATH, nó cũng sẽ có sẵn bất cứ lúc nào. .bash_profile dành riêng cho shell đăng nhập hoặc shell được thực thi khi đăng nhập.
anzenketh

thêm câu nói đó vào câu trả lời của bạn .... vì câu hỏi của tôi là gì ....
lakesh

Huh? Điều đó thậm chí không trả lời câu hỏi?
Mikel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.