Tôi không thể tìm thấy .bash_profile trong Ubuntu


67

Tôi không thể tìm thấy .bash_profiletrong Ubuntu 14.04 trong /home/userthư mục của mình . Tôi đã sử dụng ls -alệnh để xem .bash_profile, nhưng không có tệp nào như vậy.


1
Bạn nên sử dụng ~/.profilethay thế.
muru


1
Điều khá phổ biến là một số tệp cấu hình (hoặc thậm chí các thư mục) bị thiếu. Trong trường hợp đó, phần mềm nên đọc chúng sẽ sử dụng cấu hình mặc định và / hoặc đọc các nguồn khác để truy xuất cấu hình. Nếu bạn muốn sửa đổi một tệp cấu hình không tồn tại, chỉ cần tạo nó trước.
Bakuriu

Câu trả lời:


84

Ubuntu sử dụng ~/.profile.

bạn có thể tạo .bash_profileUbuntu của mình nhưng sau đó .profilesẽ không được đọc.

Nếu chúng ta đọc nội dung .profile:

cat ~/.profile

đầu ra

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.

Vì vậy, sử dụng ~/.profilethay vì~/.bash_profile


.profile không làm việc cho tôi. Tôi đã phải chỉnh sửa .bashrc vim ~/.bashrcsau đó. ~/.bashrc
Nahid

Sử dụng .bash_profile không hoạt động trên Ubuntu. Nó sử dụng Dash làm vỏ đăng nhập GUI, không phải Bash, vì vậy bash_profile không được đọc.
Jonathan Hartley

Nếu bạn chỉnh sửa .profile của mình, bạn cần đăng xuất và đăng nhập lại để xem các thay đổi.
Jonathan Hartley

8

Khi gọi bash shell đăng nhập sẽ tìm các tệp cấu hình của nó theo thứ tự sau:

[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile

Sau khi tìm thấy đầu tiên, nó ngừng tìm kiếm những người khác vì vậy nếu có một .bash_profiletrong tôi $HOMEbash sẽ không tìm kiếm .bash_login.profilenữa.

Từ ba tên tệp này, Ubuntu theo mặc định sử dụng, .profilebạn có thể đổi tên thành .bash_profilenếu bạn muốn:

mv ~/.profile ~/.bash_profile

Bây giờ nếu chúng ta mở một shell bash mới sử dụng bash -l, su - $USER, sudo -u $USER -ihoặc bất kỳ lệnh khác chạy bash như một vỏ đăng nhập, ~/.bash_profilesẽ nhận được nguồn gốc.

Điều quan trọng cần lưu ý:

Những gì tôi đã nói đến bây giờ chỉ áp dụng cho chính Bash, khi bạn đăng nhập vào hệ thống từ GUI, trình quản lý hiển thị có trách nhiệm tìm nguồn cung cấp các tệp chính xác.

Ubuntu sử dụng gdm3làm trình quản lý hiển thị của nó, nếu chúng ta xem qua: /etc/gdm3/Xsessionchúng ta có thể thấy rằng không có tệp nào sẽ có nguồn gốc ngoại trừ .profile::

# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
  if [ -f "$file" ]; then
    source_with_error_check "$file"
  fi
done

Vì vậy, nếu bạn đang sử dụng GUI để đăng nhập, hãy giữ tệp dưới .profiletên nếu không bạn có thể bỏ lỡ một số biến và cài đặt trong môi trường của mình.

Tôi đoán tùy chọn tốt hơn là tạo một liên kết tượng trưng đến .profile:

ln -s ~/.profile ~/.bash_profile

Bây giờ dữ liệu của bạn tồn tại .profile, gdmkhông bỏ lỡ bất cứ điều gì, tải bash .bash_profilethực sự .profilevà bằng cách chỉnh sửa từng dữ liệu , bạn sẽ nhận được kết quả tương tự.

Thiếu .profile?

Nếu bạn không có .profilethì lấy một bản sao của nó từ đây:

cp /etc/skel/.profile ~/.profile

hoặc là

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile

Nhưng, nếu Bash đang tìm kiếm ~ / .bash_profile trước thì tại sao nó không làm điều này trong Ubuntu? Ubuntu đã sửa đổi Bash? Điều này có vẻ lạ. man bashtrên Ubuntu vẫn mô tả cách nó sẽ tìm kiếm .bash_profile trước tiên.
Jonathan Hartley

Có vẻ cho .bash_profile đầu nó không thể tìm thấy nó (vì nó không tồn tại) sau đó tìm kiếm .bash_loginkhông thể tìm thấy nó một lần nữa (vì Ubuntu không sử dụng hai tên này) finaly nó trông cho .profilevà có có nó được. Vì vậy, nếu bạn tạo một .bash_profiletrong ~sau đó bạn đang ghi đè của ubuntu ~/.profile, đó là hành vi mặc định của bash gì đã được sửa đổi tại đây.
Ravexina

Phải, đó là những gì tôi nghĩ lúc đầu, quá! Và những gì bạn mô tả DOES xảy ra trên RHEL. Nhưng trên Ubuntu thì không. Nếu tôi tạo một .bash_profile, nó không được đọc. Tôi mới nhận ra rằng điều này là do Ubuntu không còn sử dụng 'Bash' làm vỏ đăng nhập GUI. Nó sử dụng 'Dash' thay thế. Tôi nghĩ rằng điều này đã đúng từ khoảng 18.04.
Jonathan Hartley

Bạn đang thiếu điểm ở đây. Trên thực tế, chúng ta đang nói về chính bash, điều tôi đang nói ở đây là Ubuntu tạo ra '.profile' chứ không phải những người khác, vì vậy nếu chúng ta mở một bash shell mới (shell đăng nhập) thì đó là thứ tự đọc các tệp này, ' Vấn đề gì chúng ta đang sử dụng. :)
Ravexina

Nếu độc giả đổi tên .profile thành .bash_profile như câu trả lời của bạn cho thấy, thì đối với những người trên Ubuntu, tệp đó sẽ không được đọc khi đăng nhập, cũng như không mở thiết bị đầu cuối. Bạn đã phá vỡ hệ thống của họ. Cách duy nhất mà tệp sẽ được đọc là nếu họ khởi chạy các phiên bash với '--login' để biến nó thành một vỏ đăng nhập. Điều đó sẽ không bao giờ xảy ra tự động trên máy tính để bàn của họ.
Jonathan Hartley

5

Điều đó có nghĩa là tập tin không tồn tại. Nhưng, bạn có thể tạo tệp và bashthực thi / nguồn tệp nếu bashđược gọi dưới dạng vỏ đăng nhập. Vì vậy, giờ bạn đăng nhập thông qua một vỏ (ví dụ thông qua ssh).

Nếu bạn muốn nội dung thực thi mỗi khi bạn mở một thiết bị đầu cuối, thì bạn nên sửa đổi .bashrctệp thay thế.


bạn có thể biết một số lý do tại sao tệp .bash_profile bị thiếu không?
Roledenez

Bạn có thể sao chép nó từ /etc/skel/thư mục.
Frantique

Đó là một thiết kế của kinh điển. Nhưng, điều đó không có nghĩa là không thể làm điều đó.
hỗn loạn

Tôi đã giải thích lý do .bash_profilebị thiếu (và không hoạt động) trên Ubuntu trong các nhận xét về các câu trả lời khác.
Jonathan Hartley

2

Câu trả lời hàng đầu để sử dụng ~/.profilethay vì ~/.bash_profilekhông làm việc cho tôi.

Sửa đổi .bashrclàm việc

Chỉ:

vim ~/.bashrc

Lưu ý: Tôi đang sử dụng Ubuntu WSL.


Trong Linux chính hãng, .profile được áp dụng khi bạn đăng nhập vào GUI hoặc kết nối từ xa hoặc đăng nhập vào bảng điều khiển, tức là sau khi nhấn ctrl + shift + F2. Nó được cho là thể hiện thời gian ban đầu bạn đăng nhập vào máy, tạo một lớp vỏ là cha mẹ cho tất cả các quy trình khác mà sau đó bạn tạo. Tôi nghi ngờ rằng trên WSL, không có thứ nào giống như vậy, vì vậy .profile của bạn có thể không bao giờ được đọc.
Jonathan Hartley

tương tự cho tôi. ~/.profilechỉ không được tải theo mặc định trong Ubuntu 18.04
javapowered

0

Nếu bạn có nghĩa là .bashrc, bạn sẽ tìm thấy nó trong thư mục nhà của bạn. Nếu nó không ở đó, bạn có thể sao chép nó từ thư mục / etc / skel vào thư mục nhà của bạn.

Nếu bạn cần thêm một số thông tin về chủ đề này, vui lòng truy cập trang stefaan lippens.

http://stefaanlippens.net/bashrc_and_others

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.