[閒聊] 如何尊重 $EDITIR $VISUAL alternatives?
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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.172.27.91 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1663508649.A.82B.html
→
09/18 22:08,
2年前
, 1F
09/18 22:08, 1F
→
09/18 22:13,
2年前
, 2F
09/18 22:13, 2F
→
09/18 22:15,
2年前
, 3F
09/18 22:15, 3F
→
09/18 22:55,
2年前
, 4F
09/18 22:55, 4F
差點忘了問, 請問大家, 是只有 Debian 才有 /etc/alternatives/ 嗎?
推
09/18 23:31,
2年前
, 5F
09/18 23:31, 5F
推
09/19 00:05,
2年前
, 6F
09/19 00:05, 6F
→
09/19 00:06,
2年前
, 7F
09/19 00:06, 7F
我的 debian buster 也跟你一樣
$ sudo ln -sf /bin/nano /etc/alternatives/editor 恢復原狀
$ sudo EDITOR=vim systemctl edit systemd-udevd 是叫 vim(1) --- [1]
$ sudo systemctl edit systemd-udevd 是叫 nano(1) -------------- [2]
$ sudo echo $EDITOR 是 vim
好! 那,我一定漏掉了甚麼重要的東西沒弄懂..... 請拯救我於水深火熱~
systemctl(1) 接受 [1] 的 EDITOR=vim
systemctl(1) 不認識, 或不接受 [2] bash 已經 export 的 EDITOR=vim
而同時, 如前述, crontab(1) 有 ack 我 export 的 EDITOR=vim
p.s. 換句話說, 假設我用 C 寫了一個程式, 放在 systemctl 的位置
我會有機會在程式裡面「得知」"我" 是 invoked by [1] 還是 [2] 嗎?
→
09/19 00:20,
2年前
, 8F
09/19 00:20, 8F
→
09/19 00:20,
2年前
, 9F
09/19 00:20, 9F
根據裝在我這裡的 manpage.
$SYSTEMD_EDITOR
Editor to use when editing units; overrides $EDITOR and $VISUAL. If
neither $SYSTEMD_EDITOR nor $EDITOR nor $VISUAL are present or if
it is set to an empty string or if their execution failed,
systemctl will try to execute well known editors in this order:
editor(1), nano(1), vim(1), vi(1).
我我對上一段的理解是, systemctl(1) 有意要尊重我的 $EDITOR 跟 $VISUAL
儘管我想不出 $SYSTEMD_EDITOR 存在的必要性跟正當性 (剛檢查過, 我也沒設)
我也尊重 systemctl 作者個人所偏好的 precedence (editor-nano-vim-vi)
但是, 現在, 似乎, systemctl(1) 的行為跟這一段告訴我的不太一致...
※ 編輯: cuello (218.172.27.91 臺灣), 09/19/2022 17:07:47
※ 編輯: cuello (218.172.27.91 臺灣), 09/19/2022 18:09:52
→
09/19 21:48,
2年前
, 10F
09/19 21:48, 10F
→
09/19 21:48,
2年前
, 11F
09/19 21:48, 11F
→
09/19 21:48,
2年前
, 12F
09/19 21:48, 12F
→
09/19 21:48,
2年前
, 13F
09/19 21:48, 13F
推
09/20 00:14,
2年前
, 14F
09/20 00:14, 14F
→
09/20 00:15,
2年前
, 15F
09/20 00:15, 15F
→
09/20 00:15,
2年前
, 16F
09/20 00:15, 16F
→
09/20 00:16,
2年前
, 17F
09/20 00:16, 17F
→
09/20 00:17,
2年前
, 18F
09/20 00:17, 18F
推
09/20 00:21,
2年前
, 19F
09/20 00:21, 19F
→
09/20 00:21,
2年前
, 20F
09/20 00:21, 20F
推
09/20 03:26,
2年前
, 21F
09/20 03:26, 21F
以上, 大家所看到的, 真的是一堆人耐心拯救一個執迷不悟的啊~
而且除了仔細看一堆 "s..t" 而且還要花時間打子字
請接受讚美吧!
我來列出自己認為的罪狀
A. 我抱怨 manpage 所寫的跟程式行為不一! 其實正是我自己!
---------------------------------------
因為我文裡雖然到處寫的是:
# systemctl edit systemd-udevd
看起來, 我並沒有真的這麼做,而且一次也沒有!
私底下真的做的是:
$ sudo systemctl edit systemd-udevd
然後,自己一廂情願地畫上等號。然後, 別人也看不見你在搞啥~
像這種錯誤,其實遠比表面上看起來要嚴重的多!
B. 我從來沒有嚴肅對待過 sudo(8)!
----------------------------------------
我跟 sudo(8) 從一開始,所維持的關係是曖眛不明,
得過且過的。本來給自己的理由是:
現在沒空,先做更急迫的吧...
其實反而要浪費更多資源。
雖然,用 sudo(8) 時,一直隱約感覺少了甚麼.....
但是,就一直是繞道來避免眼前的「尷尬」...
真是,「彎道超渡」啊~
這種態度,常遠來看,並沒有省到一點時間!剛好相反!
C. 我隱約對 nano 有偏見,其實預設 nano 是合理的
------------------------------------------------
預設為大多數人的選擇當然是最理性,最節能的做法。
D. 看到又多出了個甚麼 $SYSTEMD_EDITOR 而心生不滿。
-------------------------------------------------
沒必要!結果是,它並沒有干擾到我。可能是為了一個我
短期內還看不到的緣故吧。
E. 還有甚麼呢? ... 喔,我終於做了
$ sudo update-alternatives --config editor
There are 4 choices for the alternative editor
(providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/ed -100 manual mode
2 /bin/nano 40 manual mode
3 /usr/bin/vim.basic 30 manual mode
4 /usr/bin/vim.tiny 15 manual mode
Press <enter> to keep the current choice[*],
or type selection number: 3
不適合自己這樣做
$ sudo ln -sf /bin/vim /etc/alternatives/editor
這樣不完整,例如 man editor 就沒改到....
不過看起來,我還是有做對一件事,
那就是臨時決定跑上來「閒聊」
其實是「靠杯」~
※ 編輯: cuello (218.172.27.91 臺灣), 09/20/2022 10:04:41
推
09/21 19:15,
2年前
, 22F
09/21 19:15, 22F
→
09/21 19:15,
2年前
, 23F
09/21 19:15, 23F
推
09/21 21:04,
2年前
, 24F
09/21 21:04, 24F
→
09/21 21:05,
2年前
, 25F
09/21 21:05, 25F
→
09/21 21:06,
2年前
, 26F
09/21 21:06, 26F
→
09/21 21:06,
2年前
, 27F
09/21 21:06, 27F
Linux 近期熱門文章
23
129
PTT數位生活區 即時熱門文章