2010-10-08 36 views
5

Tôi đã sử dụng R trong Ubuntu để thực hiện các cuộc gọi hệ thống bằng cách sử dụng system() cho những thứ như xoay vòng các trường hợp EC2 của Amazon, quản lý tệp trên S3, v.v. Nếu tôi bắt đầu R từ dòng lệnh, mọi thứ hoạt động tốt. Nhưng nếu tôi bắt đầu R từ một kịch bản bằng cách sử dụng Rscript, hoặc từ ESS, tôi có vấn đề với các biến môi trường không được thiết lập.đặt biến môi trường cho hệ thống() trong R?

I nghĩ rằng đây là vấn đề với tôi không đúng cách nơi đặt biến môi trường trong Ubuntu. Tôi nghĩ "đúng chỗ" (đối với một số định nghĩa "đúng") là đặt biến môi trường người dùng trong ~/.bashrc. Đây là nơi tôi đặt những thứ như export EC2_HOME=/home/jd/ec2 nhưng khi tôi thực thi R từ ESS và thực hiện cuộc gọi hệ thống, tập lệnh .bashrc hiện không được chạy. Tôi đã thử Googing về và tôi thấy nhiều exegesis về biến môi trường trong Ubuntu, chẳng hạn như this one. Phản ứng giật giật đầu gối của tôi là thử mỗi đề xuất trong chủ đề nói trên và ngừng đưa ra một shit ngay sau khi một trong các tùy chọn hoạt động. Nhưng sau đó tôi kết thúc với các thiết lập phi tiêu chuẩn mà cắn tôi trong ass sau đó.

Vậy làm cách nào tôi nên đặt biến môi trường để chúng được đặt đúng khi tôi chạy một cuộc gọi system() trong R?

+0

chảo, cảm ơn bạn đã trợ giúp với tính năng gắn thẻ! –

Trả lời

6

Tôi nghĩ rằng bạn đang bối rối vấn đề này. Tôi lo sợ điều này có thể là về shell đăng nhập so với shell không đăng nhập. Xem trang hướng dẫn sử dụng bash để in đẹp ... điều này đã khiến tôi trở nên điên rồ trong quá khứ.

Điều đó nói rằng, nếu bạn có thể thiết lập các biến môi trường trên toàn hệ thống, bạn có một vài lựa chọn:

  • /etc/environment là một nơi rất tốt vì nó là vỏ-agnostic bạn nên bao giờ sử dụng một lớp vỏ khác nhau
  • để đăng nhập so với vỏ phi đăng nhập, một trong những cách để có được kiểm soát hoàn toàn mà tôi thấy phù hợp là đặt thay đổi của tôi vào một cái gì đó giống như ~/.local_bashrc
  • các thêm . ~/.local_bashrc từ và và tất cả các

    • ~./bashrc
    • ~/.bash_profile
    • ~/.profile`

    vv pp.

Bạn có thể đặt trước các nguồn với một echo Hello from FILE nơi bạn thay thế FILE với tên của tệp. Điều đó cho bạn thấy sự khác biệt giữa các hệ vỏ bắt đầu từ đăng nhập (ví dụ: thông qua gdm et al), thông qua kết nối ssh, thông qua các thiết bị đầu cuối mới xterm v.v. v.v.

+2

Lời khuyên tốt chết tiệt, như mọi khi Dirk. Tôi đã bị cám dỗ để bắt đầu chỉnh sửa '/ etc/environment' nhưng mỗi khi tôi bắt đầu vặn vẹo với một thứ gì đó trong'/etc/'tôi nghe một giọng nói có dấu của Đức nói rất nhẹ nhàng không học rất nhanh, phải không?' và tôi khá sợ hãi và xem xét lại quyết định rời khỏi trang trại gia đình và theo đuổi cuộc sống ở thành phố lớn. –

10

Bạn có thể thử đặt chúng trong chính R bằng cách sử dụng Sys.setenv.

+0

cũng shit. Tôi đã cố gắng làm điều này thông qua cách tiếp cận Ubuntu và không nhận ra có một cách tiếp cận R. Cảm ơn bạn! –

+0

Và 'Renviron'. 'Renviron.site' và' ~/.Renviron'. –

0

Bạn có thể buộc hệ thống để đọc tập tin .bashrc của bạn bằng cách sử dụng lệnh nguồn

source ~/.bashrc 

Rất nhiều cách thanh nha và xấu xí để áp dụng điều này

Các vấn đề liên quan