คือ$PATH
อะไร
ฉันจะมีคำสั่ง / โปรแกรมที่พร้อมใช้งานสำหรับฉันเท่านั้นได้อย่างไร
ฉันเคยเห็นเส้นทางนี้ที่~/bin
กล่าวถึงก่อนหน้านี้ แต่มันใช้เพื่ออะไรและฉันจะใช้มันได้อย่างไร
คือ$PATH
อะไร
ฉันจะมีคำสั่ง / โปรแกรมที่พร้อมใช้งานสำหรับฉันเท่านั้นได้อย่างไร
ฉันเคยเห็นเส้นทางนี้ที่~/bin
กล่าวถึงก่อนหน้านี้ แต่มันใช้เพื่ออะไรและฉันจะใช้มันได้อย่างไร
คำตอบ:
$ PATH เป็นตัวแปรสภาพแวดล้อมที่ใช้ในการค้นหาคำสั่ง ~ เป็นไดเรกทอรีบ้านของคุณดังนั้น ~ / bin จะเป็น / home / user / bin; มันเป็นไดเรกทอรีปกติ
เมื่อคุณรัน "ls" ในเชลล์ตัวอย่างเช่นคุณรันโปรแกรม / bin / ls ตำแหน่งที่แน่นอนอาจแตกต่างกันไปขึ้นอยู่กับการกำหนดค่าระบบของคุณ สิ่งนี้เกิดขึ้นเพราะ / bin อยู่ใน $ PATH ของคุณ
หากต้องการดูพา ธ และค้นหาตำแหน่งที่คำสั่งใดตั้งอยู่:
$ 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 ...
ในการมีไดเรกทอรีถังส่วนตัวของคุณเองคุณจะต้องเพิ่มไปยังเส้นทาง ทำได้โดยการแก้ไข ~ / .profile (ไฟล์ที่ซ่อน) เพื่อรวมบรรทัดด้านล่าง หากมีการแสดงความคิดเห็นบรรทัดคุณจะต้องยกเลิกการแสดงความคิดเห็นพวกเขาเท่านั้น หากพวกเขามีอยู่แล้วคุณพร้อมแล้ว!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
ตอนนี้คุณต้องสร้างไดเรกทอรี ~ / bin ของคุณและเนื่องจาก. profile ทำงานในการเข้าสู่ระบบและเพิ่มเพียง ~ / bin หากมีอยู่ในเวลานั้นคุณต้องเข้าสู่ระบบอีกครั้งเพื่อดู PATH ที่ปรับปรุง
ลองทดสอบดูสิ:
$ 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
เพื่อดูว่าเชลล์คำสั่งจริงแก้ไขได้อย่างไร เช่น: which echo
และtype echo
จะรายงานสิ่งต่าง ๆwhich
ส่งคืน '/ bin / echo' แต่ 'type' ส่งคืนว่าเป็นเชลล์ในตัวซึ่งเชลล์จะชอบมากกว่าไฟล์ใน '/ bin'
which
ถูกแทนที่โดยดีกว่าtype
หรือcommand
ในเชลล์แบบโต้ตอบและมันไม่มีประโยชน์อย่างสมบูรณ์ในสคริปต์
$HOME
ตัวแปรใน$PATH
บางเหตุผลไม่ทำงานนั่นคือต้องใช้~
เครื่องหมายแทน
เกี่ยวกับ~/bin
และคำสั่ง / โปรแกรมที่มีให้เฉพาะกับผู้ใช้ของคุณ
Ubuntu รุ่นล่าสุดรวมถึง~/bin
ไดเรกทอรีในของคุณ$PATH
แต่ถ้า~/bin
มีอยู่ในไดเรกทอรี
หากไม่มีอยู่:
ตรวจสอบให้แน่ใจว่าคุณ~/.profile
มีส่วนประกอบต่อไปนี้ (ค่าเริ่มต้น~/.profile
แล้ว):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
สร้าง~/bin
ไดเรกทอรี:
mkdir -p ~/bin
รีบูตคอมพิวเตอร์ของคุณหรือบังคับให้ bash อ่านใหม่~/.profile
:
exec -l bash
exec -l bash
เคล็ดลับ"รีบูตหรือ" อะไร-l
ธงทำอย่างไร man exec
ฉันไม่ได้หาคำอธิบายใน
exec -l
จะดำเนินการทุบตีเป็นเปลือกเข้าสู่ระบบ [ wiki.bash-hackers.org/commands/builtin/exec] ในระยะสั้นจะบังคับทุบตีอีกครั้งอ่านและ/etc/profile
~/.profile
เพิ่งรันexec bash
จะอ่าน~/.bashrc
ใหม่เท่านั้น