Cách đặt nhiều biến env cho một lệnh bash


108

Tôi phải đặt các biến EC2_HOME và JAVA_HOME trước khi chạy một lệnh (ec2-description-region)

Làm thế nào để làm điều đó trong một lần?

Câu trả lời:


164

Bạn có thể đặt một lần các vars cho một lệnh duy nhất bằng cách đặt chúng vào dòng lệnh trước lệnh:

$ EC2_HOME=/path/to/dir JAVA_HOME=/other/path ec2-describe-regions

Ngoài ra, bạn có thể xuất chúng trong môi trường, trong trường hợp đó, chúng sẽ được đặt cho tất cả các lệnh trong tương lai:

$ export EC2_HOME=/path/to/dir
$ export JAVA_HOME=/other/path
$ ec2-describe-regions

7
Lưu ý rằng, mặc dù nó có vẻ không phổ biến, bạn cũng có thể viết export EC2_HOME=/path JAVA_HOME=/path.
William Pursell

4
Tùy chọn một lần khá hữu ích trong các tập lệnh. Chỉ cần lưu ý đối với bất kỳ ai cần thực thi lệnh với tư cách là người chủ hoặc người dùng khác, các biến phải đứng sau sudo hoặc người dùng. Ví dụsudo -u somebody CVSROOT=:ext:somebody@12.18.127.22:/usr/local/ncvs CVS_RSH=ssh cvs co my/dir/ancient-file.py
Nagev,

Có giới hạn nào về số lượng biến bạn có thể cung cấp thông qua chi tiêu trước không?
Sam Thomas

Chỉ là giới hạn độ dài dòng lệnh tối đa, khá lớn trên linux.
Chris Dodd

2

Như hệ thống * nix khác, bạn có thể thêm chức năng như sau trong tệp .bashrc trong thư mục HOME của bạn.

function startec2(){
    EC2_HOME=/path/to/dir
    JAVA_HOME=/other/path 
    ec2-describe-regions
}

Bây giờ, bạn có thể khởi động chương trình của mình bằng lệnh sau:

startec2

4
Theo như tôi biết, điều này chỉ tạo ra các biến bash và sẽ không hoạt động.
TNW
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.