3.2. ປະຖົມນິເທດໃນລະບົບໄຟລ໌
3.2.1. ເສັ້ນທາງ
ເມື່ອທ່ານຕ້ອງການໃຫ້ລະບົບປະຕິບັດຄໍາສັ່ງ, ທ່ານເກືອບບໍ່ຈໍາເປັນຕ້ອງໃຫ້ເສັ້ນທາງເຕັມໄປຫາຄໍາສັ່ງນັ້ນ. ສໍາລັບຕົວຢ່າງ, ພວກເຮົາຮູ້ວ່າ ls ຄໍາສັ່ງແມ່ນຢູ່ໃນ / ຖັງ ໄດເລກະທໍລີ (ກວດເບິ່ງດ້ວຍ ທີ່ -a ls), ແຕ່ພວກເຮົາບໍ່ຈໍາເປັນຕ້ອງໃສ່ຄໍາສັ່ງ /bin/ls ສໍາລັບຄອມພິວເຕີລາຍການເນື້ອໃນຂອງໄດເລກະທໍລີປະຈຸບັນ.
ໄດ້ PATH ຕົວປ່ຽນແປງສະພາບແວດລ້ອມດູແລເລື່ອງນີ້. ຕົວແປນີ້ຈະສະແດງລາຍຊື່ໄດເລກະທໍລີເຫຼົ່ານັ້ນຢູ່ໃນລະບົບທີ່ໄຟລ໌ທີ່ສາມາດປະຕິບັດໄດ້ສາມາດພົບໄດ້, ແລະດັ່ງນັ້ນຈຶ່ງຊ່ວຍປະຢັດຜູ້ໃຊ້ຫຼາຍຂອງການພິມແລະຈື່ສະຖານທີ່ຂອງຄໍາສັ່ງ. ດັ່ງນັ້ນເສັ້ນທາງທໍາມະຊາດປະກອບດ້ວຍຫຼາຍໄດເລກະທໍລີທີ່ມີ ເຈົ້າ ບາງບ່ອນໃນຊື່ຂອງພວກເຂົາ, ດັ່ງທີ່ຜູ້ໃຊ້ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນ. ໄດ້ echo ຄໍາສັ່ງຖືກນໍາໃຊ້ເພື່ອສະແດງເນື້ອຫາ ("$") ຂອງຕົວແປ PATH:
rogier:> ສະທ້ອນ $PATH
/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin
rogier:> ສະທ້ອນ $PATH
/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin
ໃນຕົວຢ່າງນີ້, ໄດເລກະທໍລີ /opt/local/bin, /usr/X11R6/bin, / usr / ຖັງ, / usr / sbin ແລະ
/ ຖັງ ຕໍ່ມາໄດ້ຖືກຄົ້ນຫາສໍາລັບໂຄງການທີ່ຕ້ອງການ. ທັນທີທີ່ພົບຄໍາທີ່ກົງກັນ, ການຄົ້ນຫາຖືກຢຸດ, ເຖິງແມ່ນວ່າບໍ່ແມ່ນທຸກໆລາຍການໃນເສັ້ນທາງໄດ້ຖືກຄົ້ນຫາ. ນີ້ສາມາດນໍາໄປສູ່ສະຖານະການທີ່ແປກປະຫຼາດ. ໃນຕົວຢ່າງທໍາອິດຂ້າງລຸ່ມນີ້, ຜູ້ໃຊ້ຮູ້ວ່າມີໂຄງການທີ່ເອີ້ນວ່າ ສົ່ງຂໍ້ຄວາມ ເພື່ອສົ່ງຂໍ້ຄວາມ SMS, ແລະຜູ້ໃຊ້ອື່ນໃນລະບົບດຽວກັນສາມາດໃຊ້ມັນໄດ້, ແຕ່ນາງບໍ່ສາມາດ. ຄວາມແຕກຕ່າງແມ່ນຢູ່ໃນການຕັ້ງຄ່າຂອງ PATH ຕົວປ່ຽນແປງ:
[jenny@blob jenny]$ ສົ່ງຂໍ້ຄວາມ bash: sendsms: ບໍ່ພົບຄໍາສັ່ງ [jenny@blob jenny]$ echo $PATH
/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - tony
ລະຫັດຜ່ານ: tony:~>ທີ່ສົ່ງຂໍ້ຄວາມ
sendsms ແມ່ນ /usr/local/bin/sendsms
tony:~>echo $PATH
/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\
/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin
[jenny@blob jenny]$ ສົ່ງຂໍ້ຄວາມ bash: sendsms: ບໍ່ພົບຄໍາສັ່ງ [jenny@blob jenny]$ echo $PATH
/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - tony
ລະຫັດຜ່ານ: tony:~>ທີ່ສົ່ງຂໍ້ຄວາມ
sendsms ແມ່ນ /usr/local/bin/sendsms
tony:~>echo $PATH
/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\
/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin
ຫມາຍເຫດການນໍາໃຊ້ຂອງ su (switch user) ສະຖານທີ່, ເຊິ່ງຊ່ວຍໃຫ້ທ່ານສາມາດດໍາເນີນການ shell ໃນສະພາບແວດລ້ອມຂອງຜູ້ໃຊ້ອື່ນ, ໃນເງື່ອນໄຂທີ່ທ່ານຮູ້ລະຫັດຜ່ານຂອງຜູ້ໃຊ້.
backslash ຊີ້ບອກເຖິງການສືບຕໍ່ຂອງແຖວຕໍ່ໄປ, ໂດຍບໍ່ມີການ ກະລຸນາໃສ່ ແຍກເສັ້ນຫນຶ່ງຈາກອື່ນໆ.
ໃນຕົວຢ່າງຕໍ່ໄປ, ຜູ້ໃຊ້ຕ້ອງການໂທຫາ wc (ຄໍານັບ) ຄໍາສັ່ງເພື່ອກວດກາເບິ່ງຈໍານວນແຖວໃນໄຟລ໌, ແຕ່ບໍ່ມີຫຍັງເກີດຂຶ້ນແລະລາວຕ້ອງທໍາລາຍການກະທໍາຂອງລາວໂດຍໃຊ້ Ctrl+C ປະສົມປະສານ:
jumper:~> wc -l ການທົດສອບ
(Ctrl-C)
jumper:~> ເຊິ່ງ wc
wc ຖືກ hashed (/home/jumper/bin/wc)
jumper:~> ສະທ້ອນ $PATH
/home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin
jumper:~> wc -l ການທົດສອບ
(Ctrl-C)
jumper:~> ເຊິ່ງ wc
wc ຖືກ hashed (/home/jumper/bin/wc)
jumper:~> ສະທ້ອນ $PATH
/home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin
ການ ນຳ ໃຊ້ຂອງ ທີ່ ຄໍາສັ່ງສະແດງໃຫ້ເຫັນພວກເຮົາວ່າຜູ້ໃຊ້ນີ້ມີ a ເຈົ້າ-directory ໃນ home directory ຂອງຕົນ, ປະກອບດ້ວຍໂຄງການທີ່ເອີ້ນວ່າຍັງ wc. ນັບຕັ້ງແຕ່ໂຄງການໃນໄດເລກະທໍລີເຮືອນຂອງຕົນໄດ້ຖືກພົບເຫັນທໍາອິດໃນເວລາທີ່ຊອກຫາ
ເສັ້ນທາງຕາມການຮຽກຮ້ອງ wc, ໂປລແກລມ "ເຮັດໃນເຮືອນ" ນີ້ຖືກປະຕິບັດ, ດ້ວຍການປ້ອນເຂົ້າມັນອາດຈະບໍ່ເຂົ້າໃຈ, ດັ່ງນັ້ນພວກເຮົາຕ້ອງຢຸດມັນ. ເພື່ອແກ້ໄຂບັນຫານີ້ມີຫລາຍວິທີ (ມີຫຼາຍວິທີທີ່ຈະແກ້ໄຂບັນຫາຢູ່ໃນ UNIX / Linux): ຄໍາຕອບຫນຶ່ງອາດຈະເປັນການປ່ຽນຊື່ຜູ້ໃຊ້. wc program, ຫຼືຜູ້ໃຊ້ສາມາດໃຫ້ເສັ້ນທາງເຕັມໄປຫາຄໍາສັ່ງທີ່ແນ່ນອນທີ່ລາວຕ້ອງການ, ເຊິ່ງສາມາດຊອກຫາໄດ້ໂດຍໃຊ້ -a ທາງເລືອກໃນການ ທີ່ ຄໍາສັ່ງ.
ຖ້າຜູ້ໃຊ້ໃຊ້ໂປຼແກຼມໃນໄດເລກະທໍລີອື່ນເລື້ອຍໆ, ລາວສາມາດປ່ຽນເສັ້ນທາງຂອງລາວເພື່ອເບິ່ງໃນໄດເລກະທໍລີຂອງຕົນເອງສຸດທ້າຍ:
jumper:~> ສົ່ງອອກ PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin
jumper:~> ສົ່ງອອກ PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin
ການປ່ຽນແປງບໍ່ຖາວອນ!
ເອກະສານ