因为你(可爱)的人总是对海报的原始意图如此好奇,这是我的:
如果我在Mac上并拥有GUI(而不是,例如,在ssh会话中),我想将
$EDITOR
设置为mate_wait
。 (另请使用vim
。)
而且,你有答案。我也做。它甚至有效。这里。有时。
所以我希望你对它进行严格的审查:
我可以通过检查确认我在Mac上:
[ `uname` = 'Darwin' ]
我想我可以通过检查来判断我有一个GUI:
[ "$TERM_PROGRAM" = 'Apple_Terminal' ]
# or
[ "$DISPLAY" ]
现在,理论上我可以使用运行X11的Aqua-less OpenDarwin设置。我也可能正在运行完全可舔的Mac GUI,但还在使用另一个终端应用程序。
然后有一种令人费解的可能性,即我在运行在OS X GUI之上的Apple X11中运行xterm。在这种情况下,我仍然希望mate_wait
为$EDITOR
。
为了OCD,我希望我的检查尽可能准确。
所以,请不要鲁莽地使用我的代码。
答案 0 :(得分:2)
我会抓住这个,请注意,这可能是不完整的 条件1:我是当地的
[ -z "$SSH_CLIENT" ]
条件2:我是远程
[ -n "$SSH_CLIENT" ]
条件3:我是否拥有lickable mac GUI
[ -n "`ps -fe | grep '[W]indowServer'`" ]
将这些放在一起:
if [ -z "$SSH_CLIENT" -a -n "`ps -fe | grep '[W]indowServer'`" ]; then
EDITOR="matew"
else
EDITOR=vim
fi
你需要一个名为'matew'的脚本,它只是:
#!/bin/sh
exec mate -w "$*"
由于EDITOR只是一个直接命令,如果它是'mate -w'(至少在雪豹身上),它将不起作用。
答案 1 :(得分:0)
您可以询问launchctl
管理当前会话的内容。
if [ "$(launchctl managername)" == Aqua ]; then
EDITOR="matew";
else
EDITOR="vim";
fi;