Nedir $PATH?
Sadece benim için uygun olan komutları / programları nasıl alabilirim?
Bu yolu ~/bindaha önce bahsetmiştim, ama ne için kullanılıyor ve nasıl kullanırım?
Nedir $PATH?
Sadece benim için uygun olan komutları / programları nasıl alabilirim?
Bu yolu ~/bindaha önce bahsetmiştim, ama ne için kullanılıyor ve nasıl kullanırım?
Yanıtlar:
$ PATH, komutları aramak için kullanılan bir ortam değişkenidir. ~, Ana dizininizdir, yani ~ / bin / home / user / bin; bu normal bir dizindir.
Örneğin, bir kabuktaki "ls" yi çalıştırdığınızda, aslında / bin / ls programını çalıştırıyorsunuz; tam konum sistem yapılandırmanıza bağlı olarak değişebilir. Bu, çünkü / bin $ PATH'nizde.
Yolu görmek ve herhangi bir komutun nerede olduğunu bulmak için:
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls # searches $PATH for an executable named "ls"
/bin/ls
$ ls # runs /bin/ls
bin desktop documents downloads examples.desktop music pictures ...
$ /bin/ls # can also run directly
bin desktop documents downloads examples.desktop music pictures ...
Kendi özel bin dizininizin olması için onu sadece yola eklemeniz gerekir. Bunu, aşağıdaki satırları içerecek şekilde ~ / .profile (gizli bir dosya) düzenleyerek yapın. Çizgiler yorumlanırsa, yalnızca bunlardan rahatsız olmanız gerekir; eğer zaten oradalarsa, hepiniz hazırsınız!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
Şimdi ~ / bin dizininizi yaratmanız gerekir ve çünkü .profile oturum açma sırasında çalıştırılır ve sadece o zaman varsa ~ / bin ekler, güncellenmiş PATH'i görmek için tekrar giriş yapmanız gerekir.
Hadi deneyelim:
$ ln -s $(which ls) ~/bin/my-ls # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls # lookup through $PATH
bin desktop documents downloads examples.desktop music pictures ...
$ ~/bin/my-ls # doesn't use $PATH to lookup
bin desktop documents downloads examples.desktop music pictures ...
typegerçek bir komutun kabuk tarafından nasıl çözüleceğini görmek için kullanmak daha kullanışlıdır ; örneğin: which echove type echofarklı şeyler rapor eder, which'/ bin / echo' döndürür, ancak 'type', kabuğun '/ bin' içindeki dosyaya göre tercih edeceği bir kabuk yerleşimi olduğunu döndürür.
whichdaha iyi durumdadır ve senaryolarda tamamen işe yaramaz. typecommand
$HOMEdeğişken $PATHişe yaramıyor, yani ~bunun yerine işaret kullanmak zorunda .
İlgili ~/binve yalnızca kullanıcı tarafından kullanılabilen komutlar / programlar hakkında
Son Ubuntu sürümleri, içindeki ~/bindizini içerir $PATH, ancak yalnızca ~/bindizin varsa.
Eğer yoksa:
~/.profileTelefonunuzun aşağıdaki stanza içerdiğinden emin olun (varsayılan ayar ~/.profilezaten var):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
~/binDizini oluştur :
mkdir -p ~/bin
Bilgisayarınızı yeniden başlatın veya bash'ı yeniden okumaya zorlayın ~/.profile:
exec -l bash
exec -l bash" ya da "bahşiş " için teşekkürler . -lBayrak ne yapar ? Bir açıklama bulamıyorum man exec.
exec -lbash'ı giriş kabuğu olarak yürütür [ wiki.bash-hackers.org/commands/builtin/exec] . Kısacası, hiç bash zorlamak yeniden okumak /etc/profileve ~/.profile. Sadece koşmak exec bashsadece tekrar okuyacak ~/.bashrc.