Làm cách nào để đặt biến môi trường cho phiên Gnome?


14

Trên hệ thống của tôi, đối với các ứng dụng sử dụng SDL, tôi cần đặt biến môi trường:

export SDL_AUDIODRIVER=alsa

để có được âm thanh để làm việc đúng. Làm cách nào để thiết lập phiên Gnome của tôi để biến này có mặt cho tất cả các ứng dụng (vì vậy nếu tôi chạy một ứng dụng qua Nautilus hoặc sử dụng DBGL , các ứng dụng sẽ hoạt động bình thường)?

BIÊN TẬP:

Các tệp cấu hình tôi đã đặt (và đặt lại máy sau mỗi lần) không thành công:

  • .xsession
  • .xsessionrc
  • .gnomerc
  • .bash_profile
  • .profile<- Điều này hoạt động trong trường hợp chung, nhưng không phải khi distro của bạn đang đặt biến ở nơi khác.
  • /etc/profile

Bạn có chắc chắn điều này cần phải là một biến môi trường? Có vẻ như nó có thể là một loại thiết lập khác. Bạn đã đào xung quanh trong applet cài đặt âm thanh hệ thống?
mãLes

Nó thực sự. Đây là cách SDL chỉ ra những phụ trợ nào sẽ sử dụng. Tôi muốn nó chỉ sử dụng một tệp cấu hình, nhưng SDL khá nhất quán trong việc sử dụng các biến môi trường để ra lệnh cho hành vi.
Bernard

bạn đã thấy điều này chưa: modarchive.org/forums/index.php?topic=1879.0
codeLes

1
Vâng, đó là sự lựa chọn giữa biên dịch lại SDL hoặc đặt biến môi trường. Tôi nghĩ rằng tôi đang lựa chọn đúng. : p Điều này hoạt động (nghĩa là trong một trình bao, nó hoạt động) chỉ là vấn đề nhức nhối của việc lấy Gnome để truyền biến cho các ứng dụng không bắt đầu từ trình bao đó là vấn đề. Cảm ơn bạn đã tiếp tục giúp đỡ.
Bernard

Cái gì ở đây? (Tôi đồng ý rằng cấu hình cho gdm thực sự khó theo dõi, vì vậy suy nghĩ đầu tiên của tôi, "chỉ cần nhìn vào / etc / gdm / và đọc các tập lệnh" là rất nhiều đau đớn.) Ở đây, .profile dường như hoạt động tốt. (debian / thử nghiệm)
Anders Eurenius

Câu trả lời:


6

Có thể là biến SDL_AUDIODRIVER đang không được đặt ở đâu đó. Một chiến lược tôi sử dụng cho các vấn đề với những thứ liên quan đến tập lệnh khởi động là đưa vào các câu lệnh gỡ lỗi đơn giản để bật / tắt bằng cách tạo / xóa một tập tin. Bạn có thể bắt đầu bằng cách thêm

debug_msg() {
        test -f $HOME/.debug && echo "$@" 1>&2
}

debug_msg "running ~/.bashrc ($0), SDL_AUDIODRIVER = '$SDL_AUDIODRIVER'"

đến .bashrc, .bash_profile, .profile và / etc / profile để xem giá trị của nó và nếu / nơi nó đang thay đổi.


Mmm, đó là suy nghĩ hiện tại của tôi là tốt. Nó được đặt thành 'xung' và điều đó phải được OpenSUSE đặt ở đâu đó . Tôi sẽ làm một số công việc thám tử khi tôi về nhà.
Bernard

5

https://help.ubfox.com/community/EnvirVariabled nói về bốn nơi chúng ta có thể đặt các biến môi trường:

  • ~/.pam_environment- [Hoài] Đây không phải là tệp tập lệnh, mà bao gồm các biểu thức gán, mỗi biểu thức trên mỗi dòng. [V]] yêu cầu đăng nhập lại để khởi tạo các biến. [Càng]
  • ~/.profile - Đây có lẽ là tệp tốt nhất để đặt các phép gán biến môi trường, vì nó được DisplayManager tự động thực hiện trong phiên máy tính để bàn quá trình khởi động cũng như vỏ đăng nhập khi đăng nhập từ bảng điều khiển văn bản.
  • ~/.bash_profilehoặc ~/.bash_login- Nếu một trong những tệp này tồn tại, bash sẽ thực thi nó sau đó "~ / .profile" khi nó được bắt đầu như một vỏ đăng nhập. (Bash sẽ thích "~ / .bash_profile" hơn "~ / .bash_login"). Tuy nhiên, các tệp này sẽ không ảnh hưởng đến phiên đồ họa theo mặc định.
  • ~/.bashrc- Do cách Ubuntu hiện thiết lập các tệp tập lệnh khác nhau theo mặc định, đây có thể là nơi dễ nhất để đặt biến. Cấu hình mặc định gần như đảm bảo rằng tệp này sẽ được thực thi trong mỗi lần gọi bash cũng như trong khi đăng nhập trong môi trường đồ họa. Tuy nhiên, hiệu năng-khôn ngoan này có thể không phải là điều tốt nhất để làm vì nó sẽ khiến các giá trị được đặt không cần thiết nhiều lần.

http://userbase.kde.org/Session_En Môi_Variables / en gợi ý địa điểm này cho KDE:

KDE sẽ thực thi bất kỳ tập lệnh nào mà nó tìm thấy $HOME/.kde/envcó tên tệp kết thúc .shvà nó sẽ duy trì tất cả các biến môi trường do chúng đặt. Điều quan trọng là bất kỳ biến nào bạn muốn đặt cũng phải được xuất.

https://help.ubfox.com/community/ComposeKey#XIM đề xuất sửa đổi ~/.gnomerchoặc ~/.Xsession.


1

Tạo một .gnomerctệp trong $ HOME của bạn là tập lệnh shell ( như.bashrc ) để đặt tất cả các biến bạn muốn.


Điều này không làm việc cho tôi, thật không may.
Bernard

Bạn đã thử mở gnome-terminal và xác nhận nó không hiển thị trong env?
Mike McQuaid

1
@Mike: nó nằm trong .bashrc của tôi nên nó sẽ hiển thị, nhưng nó không chính xác. Emacs và M-x getenvxác nhận rằng nó không bị ghi đè cho các ứng dụng GUI.
Bernard

0

Bạn đã thử tạo biến môi trường int .profile hoặc / etc / profile chưa?

Điều đó nên làm việc và nên tồn tại. Không giống như .bashrc trên mỗi phiên cuối, chúng được bắt đầu khi đăng nhập vào phiên của bạn.


Than ôi, không có tác dụng.
Bernard
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.