我試圖在我的機器上使用VNC時將gvim作爲我的默認編輯器。但是當我通過SSH登錄時,希望保持vim作爲我的默認編輯器。我不知道如何區分我的.bashrc文件來自動執行此操作。同樣,有沒有一種方法可以通過與我的機器直接相連的控制檯知道會話。如何區分ssh會話或vnc會話或bashrc文件中的控制檯會話
感謝
我試圖在我的機器上使用VNC時將gvim作爲我的默認編輯器。但是當我通過SSH登錄時,希望保持vim作爲我的默認編輯器。我不知道如何區分我的.bashrc文件來自動執行此操作。同樣,有沒有一種方法可以通過與我的機器直接相連的控制檯知道會話。如何區分ssh會話或vnc會話或bashrc文件中的控制檯會話
感謝
環境變量$SSH_AUTH_SOCK
應該在任何SSH會話進行設置。因此,在您.bashrc
,你可以有
if [ -n "$SSH_AUTH_SOCK" ]
then
# code for SSH sessions here
fi
至於判斷是否是直接連接控制檯,see this question上;要在shell中(而不是在C程序中)獲取tty名稱,請使用tty
命令。
謝謝你從ajk提示 我看着變量集,看到VNCDESKTOP只在vnc情況下設置。 我使用了上面建議的方式,現在可以工作。
雖然我還是希望有人能建議如果這是一個完整的解決方案或不
這聽起來像你不真正關心它是否是SSH,VNC或控制檯。你關心你是否有一個GUI來運行gvim。
你可以用$DISPLAY
檢查:
[[ $DISPLAY ]] && export EDITOR=gvim || export EDITOR=vim
這將設置你的編輯器來gvim
的VNC和XDMCP,NX,Chrome遠程訪問,本地圖形登錄,SSH與圖形的轉發,以及其他任何與X11顯示器。
它會將您的編輯器設置爲vim
以進行常規SSH登錄以及Telnet,rsh,串行控制檯,本地登錄和所有其他非基於X11的登錄。
在我的情況我看到,當我使用VNC的SSH_AUTH_SOCK設置,但不是如果我通過SSH登錄。 VNC Session: $ set | grep的SSH SSH_AGENT_PID = 4958 SSH_AUTH_SOCK =/TMP /鑰匙圈 - TnDwmJ/SSH SSH_CLIENT = '192.168.1.1 60038 22' SSH_CONNECTION = '192.168.1.1 60038 192.168.1.2 22' SSH_TTY =的/ dev/PTS/2 SSH會話: $ set | grep的SSH SSH_CLIENT = '192.168.1.1 49874 22' SSH_CONNECTION = '192.168.1.1 192.168.1.2 49874 22' SSH_TTY =的/ dev/PTS/2 注:我不知道這是否是相關的,但我使用putty SSH和RealVNC vnc連接 – adikshit
啊,聽起來好像您的VNC會話正在通過SSH隧道轉發。我做了一個(不恰當的)的假設,即您爲其他SSH會話啓用了SSH轉發功能。你是否檢查過兩次會議的環境是否存在其他差異?也許有一些可靠的東西可以使用。 – ajk