2016-03-10 13 views
6

Tôi đang sử dụng systemd trên debian jessie để kiểm soát một dịch vụ mà tôi đang ăn biến môi trường thông qua các tập tin EnvironmentFile=/etc/default/myservicesystemd, biến multiline trong environmentfile, nơi dòng mới là đáng kể

trong tập tin này, tôi có một biến mà là một cộng đồng chính

JWT_PUB_KEY="-----BEGIN FOO BAR KEY----- 
    MIIBgjAcBgoqhkiG9w0BDAEDMA4ECKZesfWLQOiDAgID6ASCAWBu7izm8N4V 
    2puRO/Mdt+Y8ceywxiC0cE57nrbmvaTSvBwTg9b/xyd8YC6QK7lrhC9Njgp/ 
    ... 
    -----END FOO BAR KEY-----" 

đặt nó như thế không hài lòng systemd mà báo cáo lỗi (mặc dù làm một source trong bash của cùng một tập tin làm việc một cách chính xác)

tài liệu của s Báo cáo ystemd mà bạn có thể có biến multiline bởi kết thúc mỗi tập tin với một \ nhưng nó nối mỗi dòng (vì vậy chương trình của tôi nhận được toàn bộ dưới một dòng, đó là không có thêm một khóa công khai hợp lệ)

Có cách nào được biết để bảo tồn kết thúc của dòng? mà không cần phải hack như đặt \n mà tôi 'giải thích' trong mã ứng dụng của tôi?

Trả lời

0

Như bạn nghi ngờ, Systemd chấp nhận \n bên trong định nghĩa biến môi trường. Bạn không cần phải thực hiện và phân tích cú pháp đặc biệt, chỉ cần thêm \n s thích hợp khi chúng cần và thoát khỏi các dòng mới thực tế. Systemd sẽ xử lý phần còn lại và biến chúng thành một dòng chữ. Trong trường hợp của bạn này sẽ giống như thế này:

JWT_PUB_KEY="-----BEGIN FOO BAR KEY-----\n\ 
MIIBgjAcBgoqhkiG9w0BDAEDMA4ECKZesfWLQOiDAgID6ASCAWBu7izm8N4V\n\ 
2puRO/Mdt+Y8ceywxiC0cE57nrbmvaTSvBwTg9b/xyd8YC6QK7lrhC9Njgp/\n\ 
...\n\ 
-----END FOO BAR KEY-----" 
+0

hãy để tôi kiểm tra lại lần nữa, tôi nghĩ mình đã thử nghiệm sự kết hợp đó, vì tôi đã kết thúc với '\\ n \' nhưng đã lâu rồi nên tôi có thể đã bỏ qua –

+0

\\ n sẽ dẫn đến phân tích cú pháp ký tự '\' và phân tích cú pháp ký tự 'n' thay vì ký tự newline '\ n' – Av4t4r

+1

@Vality, thực sự nó không hoạt động, khi tôi làm điều đó, và sau đó tôi in bằng python tôi nhận toàn bộ biến trong một dòng –

0

Bạn không cần phải giải thích (? Phân tích) các ký tự xuống dòng cuối cùng của bạn, rằng tất cả nên xảy ra tự động, as explained here, có nghĩa là '\ n' thêm ở cuối mỗi dòng nên thực hiện thủ thuật.

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