Masaüstü Dosyaları $ PATH biçimini doğru kullanmıyor


13

.desktopUnity Launcher'da kullanmak için dosyalar oluşturuyorum .

Benim ilgili dizinde ilgili Ubuntu belgelerinde belirtildiği gibi benim dosya değişken benim dosya ~/usr/bin/doğru yerleştirilir benim dizin ( ) koymak kendi konum var .PATH.pam_environment

Bu benim .pam_environmentdosya içeriği :

LANGUAGE=en_AU:en_GB:en
LANG=en_AU.UTF-8
LC_NUMERIC=en_AU.UTF-8
LC_TIME=en_AU.UTF-8
LC_MONETARY=en_AU.UTF-8
LC_PAPER=en_AU.UTF-8
LC_NAME=en_AU.UTF-8
LC_ADDRESS=en_AU.UTF-8
LC_TELEPHONE=en_AU.UTF-8
LC_MEASUREMENT=en_AU.UTF-8
LC_IDENTIFICATION=en_AU.UTF-8

PATH DEFAULT=${PATH}:~/usr/bin/

Hangi benim PATHdeğişken aşağıdaki gibi sonuçlanır :

ben@ben-HPdv6:~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:~/usr/bin/:~/usr/bin/

İki kez eklendiğini biliyorum, ancak .pam_environmentbaşvuruda bulunduğum Ubuntu Belgeleri'nde önerilen doğru sözdizimini kullanırken ne olursa olsun dosyadaki herhangi bir şey iki kez eklenmiş gibi görünüyor.

Bu sorunun bir örneğidir (tüm vakalarda olur). Eclipse IDE çalıştıran bir komut dosyası (denir eclipse) var ~/usr/bin/.

Herhangi bir terminali açabilir ve yazabilirim eclipseve beklediğiniz gibi iyi çalışır.

Ancak aşağıdaki .desktopdosyayı kullanırken:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Eclipse - Juno (4.2)
Icon=/home/ben/.icons/eclipse.svg
Exec=eclipse

Hatayı alıyorum: Hata

Ama Exec=hattı şu şekilde değiştirdiğimde :

Exec=/home/ben/usr/bin/eclipse

mükemmel çalışıyor.

Resmi Birlik depar ve Masaüstü dosyaları belgeleri bu çalışması gerektiğini önermektedir:

Exec, yürütülebilir dosyanın yoludur. Yürütülebilir dosyanın tam yolu yalnızca $ PATH değişkeninde belirtilen yollardan hiçbirinde olmaması durumunda kullanılmalıdır. Örneğin, / usr / bin yolunun içindeki dosyaların tam yolunun Exec alanında belirtilmesi gerekmez, yalnızca dosya adları belirtilir.

Ne olduğuna dair herhangi bir öneriniz var mı?


Bir kabukta tutulma için masaüstü dosyanızı değiştirin ve işe yarayabilir. Bir süre önce portatif kullanmayı bıraktığımdan beri söyleyemedim.
RobotHumans

Yanıtlar:


5

Tilde, .pam_environmentbir profil komut dosyasında olduğu gibi genişletilmez ve masaüstü dosyaları Execsatırlarında kabuk kabuğunun yaptığı gibi kabuk genişletmesi yapmaz , bu yüzden tam anlamıyla adlandırılmış bir dosya arıyor ~/usr/bin/eclipse, elbette ki t var.

PATH atamasındaki yaklaşık işareti $ {HOME} ile değiştirin ve işe yarıyor gibi görünüyor.


Cevabınız doğru, bu da sorunu tamamen çözüyor. Teşekkürler! Beni başka bir soru sormaktan kurtarmak için, $PATHiki kez neden katılmanın iki kez olduğuna dair bir fikrin var mı?
BT

1
Bu bir hata: pad.lv/955032
cscarney

3

Ubuntu belgelerinde söylenenler mantıklı, ancak "artık önerilmiyor" bölümü bazı detaylarda eksik. Bu nedenle cevabım bu yöntemlerden birini kullanmayı içerecektir. Ayrıca: zaten aynı amaç için kullanılıyor.

./.Profile dosyanızı hızlı bir şekilde ziyaret edin.

Benimki şunları içerir:

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Bu dosyanın son bölümünde görebileceğiniz gibi (# set PATH altındaki satırlar, böylece kullanıcının özel bölmesini varsa içerir), bu zaten yapılıyor. Yani $ PATH değişkenine bir şey eklemek istersen, aynı şeyi yapardın. Belgelerde, sistem her başlatıldığında bunun çalıştırılacağı belirtildi.

Sizin durumunuzda, tek yapmanız gereken bunu eklemektir:

# set PATH to custom variable (this line is not needed)
if [ -d "$HOME/usr/bin" ]; then
    PATH="$HOME/usr/bin:$PATH"
fi

Bu noktada, bu yöntemin artık önerilmemesinin tek sebebinin, başlangıçta küçük hatalara karşı çok hassas olan komut dosyası yazmayı içermesi olduğunu düşünmeye başlıyorum. Birisi böyle bir şeyle çalışırken, küçük bir hata sadece dosyayı eski haline getirerek geri alınabilir.

Bunu nasıl yapacağınızdan emin değilseniz:

1) İlk önce CTRL + ALT + F3 tuşlarına basın

2) Ekrandaki komut istemini izleyerek oturum açın

3) Bunu komut istemine yazın:

/usr/bin/nano ./.profile

4) bu satırları kaldırın: (yeni ekledik)

# set PATH to custom variable (this line is not needed)
if [ -d "$HOME/usr/bin" ]; then
    PATH="$HOME/usr/bin:$PATH"
fi

5) CTRL + O tuşlarına basın (Çıkış'ta olduğu gibi)

6) CTRL + X tuşlarına basın (eXit'teki gibi)

7) yazın exitve ENTER tuşuna basın (bazen RETURN)

8) Şimdi CTRL + ALT + F7 tuşlarına basın

9) Sorunun ne zaman ortaya çıktığına bağlı olarak giriş ekranınızı veya masaüstünüzü almalısınız. Değilse, CTRL + ALT + DEL (bazen CTRL + ALT + DELETE) tuşlarına basın; sisteminiz güvenli bir şekilde yeniden başlatılmalıdır.

Bu yardımcı olur umarım!


Her iki çözüm de sorunu çözmek için çalışır, bu yüzden teşekkürler :) Her ikinizi de iptal ettim ama @csarney sorunun tam nedenini açıklıyor ve dokümantasyonda önerilen ortam değişkeni ayar yöntemini kullanıyor, bu yüzden çözüm olarak işaretledim.
BT
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.