Không có tệp bashrc trong thư mục nhà của tôi


14

Đây là những gì tôi ghi nhận từ bài giảng của mình:

  • Tìm tập tin .bashrctrong thư mục nhà của bạn
  • làm vi .bashrc
  • Khi bạn đặt một thư mục ứng dụng ở đâu đó, hãy đảm bảo rằng địa chỉ của nó nằm trong biến đường dẫn.

Vấn đề là tôi không có một .bashrctập tin trong thư mục nhà của tôi. Chỉ có một .bash_historytập tin trong nhà của tôi.

Nếu tôi đi đến root, có một etc/bash.bashrctập tin ở đó nhưng tôi nghĩ rằng nó sẽ thay đổi cho tất cả người dùng và không chỉ cho tôi. Tôi muốn thêm con đường này chỉ cho bản thân mình. Nó không ảnh hưởng đến người khác. Ngoài ra không có $PATHbiến trong tệp bashrc đó nên tôi càng bối rối hơn.

Câu trả lời:


20

Đừng quên nó là một tập tin ẩn trong thư mục chính của bạn (bạn sẽ không phải là người đầu tiên làm ls -lvà nghĩ rằng nó không có ở đó).

Làm theo ...

ls -la ~/ | more

Nên có một .bashrctrên trang đầu tiên. Nếu không chỉ tạo nó với

vi ~/.bashrc

Và chỉ cần viết dòng sau vào nó.

PATH=$PATH:~/bin

HOẶC Hầu hết các bản phân phối giữ một .bashrctệp tiêu chuẩn trong /etc/skel/Bạn có thể sao chép nó vào thư mục chính.

$cp /etc/skel/.bashrc ~

OK tôi hiểu rồi Trên các máy tính khác, tôi có thể gõ lego và phần mềm bắt đầu. Trên hệ thống của tôi, thư mục lego nằm trong ~/data/user1/binthư mục của tôi . Tôi đã thêm đường dẫn này vào tập tin .bashrc. Bây giờ tôi phải làm gì để khi tôi gõ lego, nó sẽ khởi động phần mềm? Tôi có phải thiết lập một bí danh không? Nếu có, làm thế nào? alias lego='<What do i put here???>'

@detraveller Bạn đã thêm vào ~/data/user1/binbiến môi trường PATH của mình trong .bashrctệp chưa? (thêm dòng này export PATH=$PATH:~/data/user1/bin:) - nếu vậy, bạn sẽ có thể chỉ cần nhập legovào thiết bị đầu cuối và chương trình sẽ bắt đầu.
AcId

Tôi chỉ thêm vào PATH=$PATH:~/data/user1/bin. Bạn đã không đề cập đến xuất khẩu vì vậy tôi đã không đặt nó ở đó. Tôi sẽ thử lại vào ngày mai khi tôi đến Uni.
gièm pha

Nhưng tôi đã tự hỏi làm thế nào để tôi nói với bash đó legolà từ khởi động phần mềm?
gièm pha

11

Hầu hết các bản phân phối giữ một .bashrctệp tiêu chuẩn trong /etc/skel/bạn chỉ có thể sao chép vào thư mục nhà của bạn. Nếu không, bạn chỉ có thể tạo một .bashrctập tin trống mới trong thư mục nhà của bạn.


4

Tạo tập tin khởi động của riêng bạn cho Shell tương tác

Giới thiệu về tập tin khởi động Bash

Từ phần HÓA ĐƠN man 1 bashcho biết:

Khi một vỏ tương tác không phải là vỏ đăng nhập được khởi động, bash sẽ đọc và thực thi các lệnh từ /etc/bash.bashrc và ~ / .bashrc, nếu các tệp này tồn tại.

Lưu ý rằng các tệp khởi động này là tùy chọn ; Bash không yêu cầu họ. Bash cũng phân biệt giữa shell đăng nhập và shell tương tác. Một vỏ tương tác được định nghĩa như vậy:

Một vỏ tương tác được bắt đầu mà không có đối số không phải tùy chọn và không có tùy chọn -c có đầu vào và lỗi tiêu chuẩn đều được kết nối với các thiết bị đầu cuối (như được xác định bởi isatty (3)) hoặc bắt đầu bằng tùy chọn -i.

Nhiều bản phân phối nguồn một loại tệp khởi động từ loại khác, nhưng một số thì không, vì vậy vấn đề này có thể khó giải quyết theo quy tắc. Bạn cần kiểm tra tất cả các tệp khởi động của bạn để xem cách thức và thời điểm bạn ~/.bashrcsẽ được gọi trên hệ thống của mình .

Tạo tập tin khởi động Shell tương tác cho mỗi người dùng của bạn

Nếu bạn chỉ đơn giản là thiếu một ~/.bashrctệp cụ thể của người dùng , chỉ cần tạo một tệp. Điều này sẽ được Bash gọi cho các shell không đăng nhập (ví dụ: shell bắt đầu mà không có --logincờ) hoặc bất cứ khi nào bạn buộc shell phải tương tác bằng cách gọi nó bằng -icờ.


0

Nếu bạn không có .bashrc, bạn chỉ cần tạo một dòng và thêm các dòng bạn muốn vào đó, chẳng hạn như:

PATH=$PATH:~/bin

để thêm thư mục bin người dùng của bạn vào cuối đường dẫn.

Nhưng bạn nên cẩn thận nếu có các tập tin khởi động khác . Các quy tắc về những gì tập tin được sử dụng là khá phức tạp, nhưng chúng được chi tiết trong bashtrang man. Nhập man bashvào một dòng lệnh và tìm kiếm INVOCATION.


0

Câu trả lời ngắn:

  1. find ~ -maxdepth 1 -name '.bashrc'
  2. vi ~/.bashrc
  3. echo $PATH | grep ~/MyNewCoolProgramFolder

Chi tiết một:
Tôi có một giải thích nghĩa đen gần gũi hơn.

  1. "Tìm tệp .bashrc trong thư mục chính của bạn"
    Vì nó tồn tại lệnhfind, có thể trình soạn thảo phản bội sẽ đề nghị bạn sử dụng nó:

    find ~ -maxdepth 1 -name '.bashrc'

    Tìm kiếm trong thư mục nhà ~, chỉ hạ xuống một cấp (không có thư mục con -maxdepth 1). Đối với tất cả các tùy chọn viết man find.
    Dòng bên dưới sẽ làm công việc tối thiểu

    ls ~/.bashrc   

    Lưu ý: Trong trường hợp ~/.bashrckhông tồn tại, bạn có thể tạo nó một cách đơn giản echo >> ~/.bashrc.

    Các >>sẽ tạo ra các tập tin nếu không tồn tại. Nếu ~/.bashrcthay vào đó tồn tại, nó sẽ chỉ nối thêm đầu ra vô hại của trống echo, tránh việc vô tình xóa một tệp quan trọng như vậy, rất khó để khôi phục nếu không có bản sao lưu.

    (Sau đây là vì hiếm khi tôi phải tôn trọng ý nghĩa của biệt danh của mình, đừng thực thi nếu bạn nghi ngờ).

    if [ ! -f ~/.bashrc ] ; 
      then
         cp -i /etc/skel/.bashrc ~/.bashrc ;
      else ls -la ~/.bashrc; 
    fi || echo " # Auto Generated " >> ~/.bashrc
  2. "Làm vi .bashrc"
    Bây giờ bạn có thể làmvi ~/.bashrc, cái bẫy ở đây là bạn cần nhấn:qthoát!

  3. Thư mục ứng dụng và$PATH
    Khi bạn tạo thư mục ứng dụng, ví dụ:~/MyNewCoolProgramFolderdòng dưới đây sẽ chỉ kiểm tra xem nó có trong$PATH:

    echo $PATH | grep ~/MyNewCoolProgramFolder

    Bạn không cần thêm nếu đã có. Nếu cần bạn có thể thêm vào $PATHvới

    PATH=$PATH:~/MyNewCoolProgramFolder

    và để thêm dòng đó vào ~/.bashrcnếu bạn muốn làm cho nó vĩnh viễn.

  4. "4?!? Làm thế nào 4 nếu chỉ có 3 điểm?" - Cách giải quyết.
    Có một số cách giải quyết cho cái sau; giả sử một tệp thực thi có tênCoolDetravellerchỉ tồn tại trong thư mục ứng dụng mới của bạn:

    (a) Bạn có thể thử thực hiện nó. Đơn giản là nó sẽ không bắt đầu nếu nó không ở trong $PATH.

    CoolDetraveller: không tìm thấy lệnh

    (b) Bạn có thể thử hoàn thành tự động của nó . Bắt đầu viết CoolDetravellevà nhấn Tab. Nếu nó ở trong $PATHnó sẽ tự động hoàn thành (luôn luôn nếu bật hoàn thành tự động).

    (c) Bạn có thể yêu cầu whichlệnh bash shell sẽ được sử dụng nếu bạn viết lệnh CoolDetraveller.

        which CoolDetraveller

    Lưu ý: Nếu trong đường dẫn ứng dụng của bạn có một hoặc nhiều không gian, whichcó thể là không thể tìm thấy CoolDetraveller, mặc dù (ở đây tôi tôn vinh nickname của tôi một lần nữa) các hoàn auto của CoolDetravellernhư một tham số hợp lệ của whichlệnh sẽ làm việc!

    Quảng cáo nauseam : Bạn không thể hỏiwhereis CoolDetravellerwhereis

    có một con đường được mã hóa cứng, vì vậy có thể không phải lúc nào bạn cũng tìm thấy những gì bạn đang tìm kiếm

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.