在 RHEL7 上使用 Ansible 將項目永久添加到 $PATH
/home/another-user/bin
為了使 Ansible 成功添加到 RHEL 7 VM 上的 $PATH 變數,必須更改以下哪些特定語法?目前版本的劇本:
我們使用的劇本為 設置了一個變數,
/home/another-user/bin
然後使用該變數添加一行,/etc/environment
如下所示:vars: extra_path: /home/another-user/bin vars_files: - myVars.yaml #Other stuff - name: Update /etc/environment for newly loaded apps lineinfile: dest: /etc/environment line: "export PATH={{ extra_path }}:$PATH" owner: root become: true become_user: root vars: ansible_become_password: "{{ root_pass_word }}"
結果不好
問題是上面的範例正在破壞 $PATH 中的所有現有條目,因此
cat
不再辨識諸如和其他基本命令:[my-user@ip-10-0-0-171 ~]$ echo $PATH /home/another-user/bin:$PATH:/usr/local/sbin:/usr/sbin:/home/my-user/.local/bin:/home/my-user/bin [my-user@ip-10-0-0-171 ~]$ cat /etc/environment -bash: cat: command not found [my-user@ip-10-0-0-171 ~]$
我確實在這里和 Stack Overflow 上找到了使用正則表達式的其他範例,但是這些範例會導致相同的問題,
command not found
即/etc/environment
以一種或另一種方式進行修改。
該
/etc/environment
文件不作為 shell 腳本進行評估。引用其手冊頁(為清楚起見重新排列):配置文件包含“KEY=VALUE”環境變數分配列表,由換行符分隔。
這些賦值的右側可以引用先前定義的環境變數,使用“ $ {OTHER_KEY}" and " $ OTHER_KEY”格式。
…
不支持 shell 語法的其他元素。
因此,您
export
在插入的行中有一個命令,該命令對該/etc/environment
文件無效。更改自:
line: "export PATH={{ extra_path }}:$PATH"
至
line: "PATH={{ extra_path }}:$PATH"
它應該可以正常工作。
此處要檢查的其他內容是您要添加的新路徑,它似乎是
/home/another-user/bin
. 使用者的主目錄通常受到 700 權限的保護,因此內容僅對所有者可見(即與該主目錄對應的使用者)。/etc/environment
適用於所有使用者,但新路徑配置是否與所有使用者相關?可以考慮研究的東西。