Đây là động lực cho câu hỏi:
Tôi đang sử dụng Ubuntu 12.04 LTS 2 với máy tính để bàn Unity. Trong tệp .bashrc của tôi, tôi nối thêm một số thư mục vào biến PATH của mình và xác định một vài biến môi trường, chẳng hạn như JAVA_HOME. Khi tôi khởi chạy ứng dụng từ thiết bị đầu cuối (chạy bash, shell mặc định của tôi), điều này hoạt động rất tốt, nhưng đối với một số phím tắt sử dụng trình khởi chạy Unity, chúng chạy các ứng dụng dường như được xác định để sử dụng #! / Bin / sh, được đặt bí danh là / bin / dash và họ không nhận nội dung của ~ / .bashrc hoặc ~ / .profile.
Tôi cho rằng tôi có thể thay đổi tất cả các phím tắt này thành sử dụng / bin / bash thay vì / bin / sh để buộc nó phải nhận các thay đổi .bashrc, nhưng điều đó có vẻ rất khó khăn.
Cho rằng Ubuntu 12.04 (theo mặc định) bí danh / bin / sh thành / bin / dash và vỏ mặc định của tôi là / bin / bash, có một nơi duy nhất mà tôi có thể chọn để sửa đổi PATH và xác định các biến môi trường nếu tôi muốn có mặt trong tất cả các trường hợp sau:
- Bất cứ khi nào tôi tạo một vỏ bash không đăng nhập (sử dụng thiết bị đầu cuối trong sự thống nhất)
- Bất cứ khi nào tôi tạo shell bash đăng nhập (ví dụ: đăng nhập từ xa qua ssh)
- Bất cứ khi nào tôi sử dụng trình khởi chạy ứng dụng Unity (cho rằng trình khởi chạy sử dụng / bin / sh).
- Bất cứ khi nào một công việc cron thực thi (được cho là SHELL = / bin / sh in / etc / crontab).
Nếu tôi hiểu chính xác, tôi đoán rằng:
- (1) / (2) và (3) / (4) khác nhau vì (1) / (2) là bash và (3) / (4) là dấu gạch ngang.
- (1) và (2) khác nhau vì các tệp bash chọn tải khác nhau tùy thuộc vào việc nó có phải là vỏ đăng nhập hay không.
- (3) và (4) khác nhau vì (3) sẽ đến vào một lúc nào đó sau khi tôi đăng nhập (và do đó ~ / .profile sẽ có nguồn gốc từ một trong các quy trình mẹ của nó, trong khi (4) sẽ đến một số điểm khi tôi chưa đăng nhập và do đó ~ / .profile sẽ không được đọc.
(Tôi sẽ không ngạc nhiên nếu các yếu tố khác cũng vậy, chẳng hạn như vỏ có tương tác hay không, do đó, có thể có nhiều kết hợp mà tôi thậm chí không lường trước được ... Tôi rất vui khi câu hỏi của mình "được cải thiện " trong trường hợp đó.)
Tôi hy vọng rằng đến một lúc nào đó, ai đó phải thực hiện một số hướng dẫn cho bạn biết cách / nơi sửa đổi các biến môi trường theo cách độc lập với vỏ (hoặc ít nhất là cách tương thích dash / bash) ... Tôi chỉ có thể ' t dường như tìm thấy các thuật ngữ tìm kiếm phù hợp để tìm hướng dẫn như vậy.
Giải pháp hoặc con trỏ đến giải pháp đánh giá rất cao!
Đã cập nhật:
- Làm rõ: Đây là người dùng Ubuntu mặc định được tạo bởi quá trình cài đặt 12.04, vì vậy không có gì lạ mắt. Nó không có một ~ / .profile (mà các nguồn rõ ràng ~ / .bashrc), và chỉ ~ / bash * tập tin hiện nay là .bashrc, .bash_history, và bash_logout ... vì vậy không không có .bash_profile.
- Nhấn mạnh vào phạm vi: Tôi không thực sự quan tâm đến bất kỳ shell nào ngoài shell tương tác mặc định (bash) và bất kỳ tập lệnh nào xảy ra để sử dụng / bin / sh (bí danh cho dấu gạch ngang), vì vậy không cần phải phức tạp hóa điều này với bất kỳ điều gì thêm cho tcsh / ksh / zsh / v.v. ủng hộ.