[閒聊] 如何尊重 $EDITIR $VISUAL alternatives?

作者: cuello (cuello)   2022-09-18 21:44:07
Hi,
最近有次閒逛, 逛到了 /etc/alternatives/
看到裡面有個 editor -> /bin/nano
就馬上想起了前好一陣子, 當我在
# vim /etc/systemd/system/systemd-udevd.service.d/override.conf
板上有人提醒我, 應該
# systemctl edit systemd-udevd
只是, systemd 好像無意尊重我選擇的 editor
因為我的 $EDITOR 跟 $VISUAL 都設為 vim
而且, crontab -e 很配合我的選擇.
但是, systemctl 卻堅持要叫用 nano(1)
我試過把 EDITOR 改為 nono, crontab -e 就也叫的 nano(1).
這很好啊~ 不是嗎? 但是 systemd 就偏偏不配合...
當時, 板上也似乎沒有人想到是甚麼原因它一定要 nano...
最近碰巧撞到了 /etc/alternatives/editor 就隨手
# ln -sf /bin/vim /etc/alternatives/editor
果然, systemctl(1) 就注意到了我要的是 vim...
看起來, 這似乎是近代 Linux 的另外一個「選擇途逕」
把它們全部集中在 /etc/alternatives 來管理
想, 其實也是個不錯的辦法... 可是, 你知道我的問題:
Given 我的 1. EDITOR=vim 2. VISUAL=vim
3. /etc/alternatives/editor -> /bin/nano
那麼, 當一個 developer 需要叫用 editor
而系統環境卻各有不同意見, 他該怎麼做才好?
(P.S. 我跑的是 Debian buster)
regards
作者: obarisk (OSWALT)   2022-09-18 22:08:00
update-alternatives寫一個腳本檢查 EDITOR 環境變數給 editor此外,systemd edit 用的環境變數是 SYSTEMD_EDITOR
作者: ChakraLinux (GNU/Chakra Project)   2022-09-18 22:55:00
並沒有,這是Debian系的手段好嗎
作者: holishing   2022-09-18 23:31:00
剛剛查一下 RHEL 最近也出了類似的東西sudo EDITOR=vim systemctl edit servicename.service剛試一下這樣可以吃到 EDITOR 啊 (CentOS Stream 8)
作者: obarisk (OSWALT)   2022-09-19 00:20:00
樓上是對的 SYSTEMD_EDITOR 接下來是EDITORman systemctl edit
作者: oToToT (屁孩)   2022-09-19 21:48:00
你可以想想看下面這幾個的差別sudo echo $EDITORsudo bash -c 'echo $EDITOR'sudo EDITOR=vim bash -c 'echo $EDITOR'
作者: lantw44 (#######################)   2022-09-20 00:14:00
sudo 預設會重設環境變數,除非你開 sudo -E 或在設定檔裡特別設定不要重設,不然大多數環境變數都不會經由 sudo往下傳。另外 sudo echo "$EDITOR" 這個變數在你的 shell就已經展開了,實際傳給 sudo 的就是 echo vim,無法用來確認 sudo 執行程式用的環境變數。另外 /etc/alternatives 不是設計來手動修改的,它有設定檔,要改應該要用 update-alternatives 指令改。
作者: Hurricaneger (褲襪脫落大尉)   2022-09-20 03:26:00
4F為什麼你不更新了?
作者: holishing   2022-09-21 19:15:00
我也是覺得一直鑽 editor 要怎麼設定很煩, 所以就找一個成功率看起來最高的方法,就無腦用下去了
作者: lantw44 (#######################)   2022-09-21 21:04:00
SYSTEMD_EDITOR 存在的目的,應該是讓你可以在不同的程式用不同的編輯器。前面的 SYSTEMD 就像是 namespace 的功能,讓不同程式的設定不會互相干擾。就像是 git 也有GIT_EDITOR,psql 也有 PSQL_EDITOR 一樣。
作者: goldie (阿良)   2022-09-24 17:21:00
對,透過 update-alternative 管理才是正途,不建議手動改 symlink。

Links booklink

Contact Us: admin [ a t ] ucptt.com