Apa $PATH
?
Bagaimana saya bisa memiliki perintah / program yang hanya tersedia untuk saya?
Saya telah melihat jalan ini ~/bin
disebutkan sebelumnya, tetapi apa gunanya, dan bagaimana saya menggunakannya?
Apa $PATH
?
Bagaimana saya bisa memiliki perintah / program yang hanya tersedia untuk saya?
Saya telah melihat jalan ini ~/bin
disebutkan sebelumnya, tetapi apa gunanya, dan bagaimana saya menggunakannya?
Jawaban:
$ PATH adalah variabel lingkungan yang digunakan untuk mencari perintah. ~ Adalah direktori home Anda, jadi ~ / bin akan menjadi / home / user / bin; itu adalah direktori normal.
Ketika Anda menjalankan "ls" di shell, misalnya, Anda benar-benar menjalankan program / bin / ls; lokasi yang tepat mungkin berbeda tergantung pada konfigurasi sistem Anda. Ini terjadi karena / bin ada dalam $ PATH Anda.
Untuk melihat lintasan dan menemukan di mana perintah tertentu berada:
$ 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 ...
Untuk memiliki direktori bin pribadi Anda sendiri, Anda hanya perlu menambahkannya ke path. Lakukan ini dengan mengedit ~ / .profile (file tersembunyi) untuk menyertakan baris di bawah ini. Jika baris-baris tersebut dikomentari, Anda hanya perlu menghapus komentarnya; jika mereka sudah ada di sana, Anda sudah siap!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
Sekarang Anda perlu membuat direktori ~ / bin Anda dan, karena. Profil dijalankan saat login dan hanya menambahkan ~ / bin jika ada pada saat itu, Anda perlu masuk lagi untuk melihat PATH yang diperbarui.
Mari kita mengujinya:
$ 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
untuk melihat bagaimana perintah aktual akan diselesaikan oleh shell; misalnya: which echo
dan type echo
akan melaporkan hal-hal yang berbeda, which
mengembalikan '/ bin / echo' tetapi 'ketik' mengembalikan bahwa itu adalah builtin shell, yang shell lebih suka daripada file dalam '/ bin'.
which
lebih baik diganti oleh type
atau command
di shell interaktif, dan itu benar-benar tidak berguna dalam skrip.
$HOME
variabel $PATH
untuk beberapa alasan tidak berfungsi, yaitu kita harus menggunakan ~
tanda.
Mengenai ~/bin
dan perintah / program hanya tersedia untuk pengguna Anda
Versi Ubuntu terbaru menyertakan ~/bin
direktori di Anda $PATH
, tetapi hanya jika ~/bin
direktori itu ada.
Jika tidak ada:
Pastikan bahwa Anda ~/.profile
berisi bait berikut (standarnya ~/.profile
sudah berlaku):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Buat ~/bin
direktori:
mkdir -p ~/bin
Mulai ulang komputer Anda, atau paksa bash untuk membaca kembali ~/.profile
:
exec -l bash
exec -l bash
tip "reboot atau ". Apa yang dilakukan -l
bendera? Saya tidak menemukan penjelasan di man exec
.
exec -l
akan mengeksekusi bash sebagai shell login [ wiki.bash-hackers.org/commands/builtin/exec] . Singkatnya, ini memaksa bash untuk membaca kembali /etc/profile
dan ~/.profile
. Hanya berlari exec bash
hanya akan membaca ulang ~/.bashrc
.