Nedir $PATH
?
Sadece benim için uygun olan komutları / programları nasıl alabilirim?
Bu yolu ~/bin
daha ö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 ~/bin
daha ö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 ...
type
gerçek bir komutun kabuk tarafından nasıl çözüleceğini görmek için kullanmak daha kullanışlıdır ; örneğin: which echo
ve type echo
farklı ş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.
which
daha iyi durumdadır ve senaryolarda tamamen işe yaramaz. type
command
$HOME
değişken $PATH
işe yaramıyor, yani ~
bunun yerine işaret kullanmak zorunda .
İlgili ~/bin
ve yalnızca kullanıcı tarafından kullanılabilen komutlar / programlar hakkında
Son Ubuntu sürümleri, içindeki ~/bin
dizini içerir $PATH
, ancak yalnızca ~/bin
dizin varsa.
Eğer yoksa:
~/.profile
Telefonunuzun aşağıdaki stanza içerdiğinden emin olun (varsayılan ayar ~/.profile
zaten var):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
~/bin
Dizini 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 . -l
Bayrak ne yapar ? Bir açıklama bulamıyorum man exec
.
exec -l
bash'ı giriş kabuğu olarak yürütür [ wiki.bash-hackers.org/commands/builtin/exec] . Kısacası, hiç bash zorlamak yeniden okumak /etc/profile
ve ~/.profile
. Sadece koşmak exec bash
sadece tekrar okuyacak ~/.bashrc
.