Làm cách nào để xuất vĩnh viễn một biến trong Linux?


154

Tôi đang chạy RHEL6 và tôi đã xuất một biến môi trường như thế này:

export DISPLAY=:0

Biến đó bị mất khi đóng thiết bị đầu cuối. Làm cách nào để thêm vĩnh viễn giá trị này để giá trị biến này luôn tồn tại với một người dùng cụ thể?

Câu trả lời:


170

Bạn có thể thêm nó vào tệp cấu hình shell của mình, ví dụ $HOME/.bashrchoặc nhiều hơn trên toàn cầu /etc/environment. Sau khi thêm các dòng này, các thay đổi sẽ không phản ánh ngay lập tức trong hệ thống dựa trên GUI, bạn phải thoát khỏi thiết bị đầu cuối hoặc tạo một thiết bị mới và trong máy chủ đăng xuất phiên và đăng nhập để phản ánh những thay đổi này.


3
Cảm ơn, điều đó hữu ích. Làm cách nào để thay đổi có hiệu lực mà không cần khởi động lại? (Tôi là người mới sử dụng Linux)
Bitterblue

5
@ mini-me - ~ / bashrc được kéo mỗi khi bạn mở shell. Để tải nó một cách rõ ràng, sử dụng sourceví dụ - > source ~/.bashrc.
kostja

@kostja Cho tất cả vỏ mới ? Nếu tôi có nhật thực chạy trước khi tôi thay đổi các biến env đó và tôi muốn nhật thực thay đổi vars, tôi có phải khởi động lại nhật thực không?
Bitterblue

1
@ mini-me: môi trường của một tiến trình thường được người gọi đặt và thay đổi từ bên trong tiến trình. Thay đổi env từ bên ngoài một quy trình đang chạy là không bình thường và không thể thực hiện được export, nhưng hãy thử với trình gỡ lỗi
Antoine

1
@ Mr.Hyde: Nó thường không thành vấn đề. Các tệp được phân tích cú pháp từ trên xuống dưới, vì vậy nếu một định nghĩa var phụ thuộc vào một tệp khác, chúng nên được sắp xếp theo thứ tự. Vì vậy, có kết thúc của tập tin là tốt.
Antoine

120

Bạn phải chỉnh sửa ba tệp để đặt biến môi trường vĩnh viễn như sau:

  • ~ / .bashrc

    Khi bạn mở bất kỳ cửa sổ đầu cuối, tập tin này sẽ được chạy. Do đó, nếu bạn muốn có một biến môi trường vĩnh viễn trong tất cả các cửa sổ đầu cuối của mình, bạn phải thêm dòng sau vào cuối tệp này:
    export HIỂN THỊ = 0

  • ~ /.

  • Tương tự như bashrc, bạn phải đặt dòng lệnh được đề cập ở cuối tệp này để có biến môi trường trong mỗi lần đăng nhập của HĐH.

  • / etc / môi trường

  • Nếu bạn muốn biến môi trường của mình trong mọi cửa sổ hoặc ứng dụng (không chỉ cửa sổ đầu cuối), bạn phải chỉnh sửa tệp này. Thêm lệnh sau vào cuối tệp này:
    DISPLAY = 0
    Lưu ý rằng trong tệp này, bạn không phải viết lệnh xuất

Thông thường bạn phải khởi động lại máy tính của mình để áp dụng những thay đổi này. Nhưng bạn có thể áp dụng các thay đổi trong bashrchồ sơ bằng các lệnh sau:

$ source ~/.bashrc
$ source ~/.profile

Nhưng đối với / etc / môi trường, bạn không có lựa chọn nào khác ngoài khởi động lại (theo như tôi biết)

  • Một giải pháp đơn giản

  • Tôi đã viết một kịch bản đơn giản cho thủ tục này để thực hiện tất cả những công việc đó. Bạn chỉ cần đặt tên và giá trị của biến môi trường của bạn.

    #!/bin/bash
    echo "Enter variable name: "
    read variable_name
    echo "Enter variable value: "
    read variable_value
    echo "adding " $variable_name " to environment variables: " $variable_value
    echo "export "$variable_name"="$variable_value>>~/.bashrc
    echo $variable_name"="$variable_value>>~/.profile
    echo $variable_name"="$variable_value>>/etc/environment
    source ~/.bashrc
    source ~/.profile
    echo "do you want to restart your computer to apply changes in /etc/environment file? yes(y)no(n)"
    read restart
    case $restart in
        y) sudo shutdown -r 0;;
        n) echo "don't forget to restart your computer manually";;
    esac
    exit
    

    Lưu các dòng này trong một shfile sau đó làm cho nó thực thi và chỉ cần chạy nó!


    1
    Kịch bản làm việc rất tốt. Tôi đã cài đặt Ubuntu 14.04. Tôi chỉ dán nội dung ở trên trong một tập tin trống, đặt tên là insert_var.sh , sau đó chmod -x insert_var.sh, sau đó bash insert_var.sh. Cảm ơn.
    Brunno Vodola Martins

    Tôi đã mở Cửa sổ đầu cuối trong Ubuntu và nhập export MY_VAR = 1. Biến MY_VAR này sẽ được lưu trữ ở đâu?
    vgokul129

    29

    thêm dòng vào .bashrchoặc .profile. Các biến được đặt trong $HOME/.profileđang hoạt động cho người dùng hiện tại, các biến trong /etc/profiletoàn cầu. Các .bashrcđược kéo trên mỗi đầu phiên bash.


    27

    Trên các hệ thống Ubuntu, sử dụng các vị trí sau:

    1. Các biến liên tục trên toàn hệ thống trong định dạng của JAVA_PATH=/usr/local/javacửa hàng tại

      /etc/environment
      
    2. Các biến liên tục trên toàn hệ thống tham chiếu các biến như
      export PATH="$JAVA_PATH:$PATH"lưu trữ trong

      /etc/.bashrc
      
    3. Biến liên tục cụ thể của người dùng trong định dạng của PATH DEFAULT=/usr/bin:usr/local/bincửa hàng trong

      ~/.pam_environment
      

    Để biết thêm chi tiết về # 2, hãy xem câu hỏi Hỏi Ubuntu này . LƯU Ý: # 3 là đề xuất Ubuntu nhưng có thể có mối lo ngại về bảo mật trong thế giới thực.


    2

    Một ví dụ cụ thể: Tôi đã cài đặt Java 7 và Java 6, tôi cần chạy một số bản dựng với 6, một số khác với 7. Vì vậy, tôi cần thay đổi linh hoạt JAVA_HOMEđể maven chọn ra những gì tôi muốn cho mỗi bản dựng. Tôi đã làm như sau:

    • j6.shtập lệnh đã tạo chỉ đơn giản là xuất JAVA_HOME=...đường dẫn đến cài đặt j6 ...
    • sau đó, như được đề xuất bởi một trong những ý kiến ​​trên, bất cứ khi nào tôi cần J6 để xây dựng, tôi chạy nguồn j6.shtrong thiết bị đầu cuối lệnh tương ứng đó. Theo mặc định, của tôi JAVA_HOMEđược đặt thành J7.

    Hi vọng điêu nay co ich.


    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.