bashrc: X penceresinin kullanılabilir olup olmadığını nasıl bilebilirim?


10

Benim içinde ~/.bashrc$ EDITOR'u gvim olarak ayarlayan bir parça var . X penceresindeyken iyi çalışıyor. Ancak, iş istasyonuma (başka bir iş istasyonundan) ssh olursa gvim "ekranı açamıyor" şikayet etmeye başlar.

Bu nedenle ben ifbashrc bir ifade koymak istiyorum , eğer X pencere varsa o zaman gvim kullanın, aksi takdirde vim olsun.

Bunu nasıl başarabilirim?

Yanıtlar:


11

Bunu yapmanın bir yolu, DISPLAY ortam değişkeninin varlığını test eder:

if [ "$DISPLAY" ]
then
    EDITOR=gvim
else
    EDITOR=vim
fi

Bazı durumlarda, gvim'iniz X sunucusuyla iletişim kuramasa bile DISPLAY ayarlanır. Bu durumlarda, RunningX programını kullanın :

if RunningX
then
    EDITOR=gvim
else
    EDITOR=vim
fi

if [[ $DISPLAY ]]için çift ayraç meraklıları ...
Serge Stroobandt

7

$DISPLAYEğer bir ekrana bağlı değilseniz ortam değişkeni Eğer X ise bir şey ayarlanmış, ve unset edilmelidir.

Yani bunu kullanabilirsiniz:

if [ -n "$DISPLAY" ]; then
    alias vim='gvim'
else
    alias vim='vim'
fi

Ama başka bir çözüm daha var. Buna ssh X yönlendirme denir.

Çalıştırmak

ssh -X yourworkstation

vim'i ssh'd olduğunuz bir makinede çalıştırabilirsiniz ve X'i çalıştırdığınız makinede görüntülenir.


3

Bunu .bashrc'nize koyun:

if [ -z "${DISPLAY:-}" ]; then
  EDITOR='vim'
else
  EDITOR='gvim'
fi

1

Bu, sorunuzun cevabı olmasa da, X * çalıştıran bir iş istasyonundan başka bir iş istasyonuna sshing yapıyorsanız, X iletmesini ssh ile ayarlarsanız aslında gvim kullanabileceğinizi belirtmek yararlı olabilir . Pencere bilgileri sadece ağ üzerinden gönderilecek ve gvim yerel olarak çalıştırıldığı gibi açılacaktır.

Aşağıdakileri ~ / .ssh / config dizinine ekleyin

Host *
   ForwardX11 yes 

Şimdi sadece gvim'i çalıştırabileceksiniz.

Orijin iş istasyonunuz Windows ise ve X çalıştırmıyorsa, Cygwin kullanarak yerel olarak bir X sunucusu başlatabilirsiniz. Bu kurulduktan sonra, PuTTy gibi popüler ssh istemcilerini X11 iletimi yapacak şekilde yapılandırabilirsiniz ve ardından gvim yerel pencerelerle dekore edilmiş bir pencerede görünecektir.


0

Geçerli X11 oturumu hakkında bilgi içeren XLOCAL gibi Xorg'un başlangıçta ayarladığı ortam değişkenlerinden birini kontrol etmeniz yeterlidir.


0

Kötü ama boş olmayan DISPLAY değişkenleri hakkında akıllı olduğu için RunningX'i kullanarak garyjohn'un cevabını beğendim.

Ama .. Daha iyisini yapmak istiyorum. Genellikle ekran oturumları kullanıyorum. Evde bir ekran oturumu başlatabilirim, DISPLAY tanımlandı. Sonra başka bir yerden ssh, DISPLAY hala tanımlanmış ve aslında ... evde! Bu yüzden 'ihracat $ DISPLAY =' vereceğim. Bu iyidir, ancak bu cevap zaten kontrol edildiğinden ve geçerli bir DISPLAY değişkeni bulduğu için .bashrc başlangıçta EDITOR yine de gvim olarak ayarlanacaktır.

Buraya benzer bir soruna çözüm bulmak için geldim, X-GUI manpage taraması için Yelp kullanmak istedim, ancak X kullanmadığınızda otomatik olarak geleneksel insan komutuna düştüm.

man () {
    if RunningX
    then
        yelp "man:$@";
    else
        /usr/bin/man "$@";
    fi
}

EDITOR sorunu için aşağıdaki gibi bir şey yapabileceğini düşünüyorum:

EDITOR=vim
vim () {
    if RunningX
    then
        gvim "$@";
    else
        vim "$@";
    fi
}

Bunu uzun hikaye olmadan yayınlardım ama test etmedim. Kendimi bash acemi olarak görüyorum. 'Adam komutumu' test ettim, işe yarıyor! Editörüm için emacs kullanıyorum, X için kendi kontrolü var. Gvim yüklü bile değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.