ฉันจะเพิ่มไดเรกทอรี$PATH
ใน Ubuntu และทำการเปลี่ยนแปลงแบบถาวรได้อย่างไร
ฉันจะเพิ่มไดเรกทอรี$PATH
ใน Ubuntu และทำการเปลี่ยนแปลงแบบถาวรได้อย่างไร
คำตอบ:
พา ธ ที่ตั้งค่าใน.bash_profile
จะถูกตั้งค่าในเชลล์ล็อกอิน bash ( bash -l
) เท่านั้น หากคุณใส่เส้นทางของคุณ.profile
มันจะพร้อมใช้งานในเซสชันเดสก์ท็อปทั้งหมดของคุณ นั่นหมายความว่าแม้ความหนาแน่นจะใช้
ตัวอย่างเช่น~/.profile
:
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
Btw คุณสามารถตรวจสอบตัวแปร PATH ของกระบวนการโดยดูที่สภาพแวดล้อมใน/proc/[pid]/environ
(แทนที่ [pid] ด้วยหมายเลขจากps axf
) เช่นใช้grep -z "^PATH" /proc/[pid]/environ
bash
ในฐานะที่เป็นเชลล์เข้าสู่ระบบจะไม่แยกวิเคราะห์.profile
ถ้ามี.bash_profile
หรือ.bash_login
มีอยู่ จากman bash
:
มันจะมองหา ~ / .bash_profile, ~ / .bash_login และ ~ / .profile ตามลำดับและอ่านและเรียกใช้คำสั่งจากคำสั่งแรกที่มีอยู่และอ่านได้
ดูคำตอบด้านล่างสำหรับข้อมูลเกี่ยวกับ.pam_environment
หรือ.bashrc
เชลล์ที่ไม่ใช่การเข้าสู่ระบบแบบโต้ตอบหรือตั้งค่าทั่วโลกสำหรับผู้ใช้ทั้งหมดโดยใส่สคริปต์ลงใน/etc/profile.d/
หรือใช้/etc/X11/Xsession.d/
เพื่อส่งผลกระทบต่อเซสชันผู้จัดการการแสดงผล
PATH="$HOME/bin:$PATH"
ดังนั้นฉันจะเพิ่มมันเข้าไปหรือไม่
แก้ไข.bashrc
ในโฮมไดเร็กทอรีของคุณและเพิ่มบรรทัดต่อไปนี้:
export PATH="/path/to/dir:$PATH"
คุณจะต้องแหล่งที่มาของคุณ.bashrc
หรือออกจากระบบ / เข้าสู่ระบบ (หรือรีสตาร์ท terminal) เพื่อให้การเปลี่ยนแปลงมีผล หากต้องการแหล่งที่มาของคุณ.bashrc
เพียงพิมพ์
$ source ~/.bashrc
.bashrc
" ได้อย่างไร คุณจะ "รีสตาร์ทเครื่อง" ได้อย่างไร?
.bashrc
ไม่ถูกต้องสำหรับการตั้งค่าตัวแปรสภาพแวดล้อม พวกเขาควรจะไปในหรือ.profile
.pam_environment
ดูmywiki.wooledge.org/DotFiles
. .bashrc
ไม่.bashrc
:) หรือsource .bashrc
สำหรับเรื่องนั้น
สถานที่แนะนำเพื่อกำหนดตัวแปรสภาพแวดล้อมทั้งระบบแบบถาวรที่ใช้กับผู้ใช้ทั้งหมดอยู่ใน:
/etc/environment
(ซึ่งเป็นที่ที่PATH
มีการกำหนดค่าเริ่มต้น)
สิ่งนี้จะทำงานในเดสก์ท็อปหรือคอนโซล, gnome-terminal หรือ TTY, ฝนหรือเงา;)
หากต้องการแก้ไขให้กดAlt+ F2และพิมพ์:
gksudo gedit /etc/environment
(หรือเปิดไฟล์โดยใช้sudo
ในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ)
. /etc/environment
ที่จะทำให้เกิดการเปลี่ยนแปลงที่เรียกใช้ เนื่องจากไฟล์นี้เป็นเพียงสคริปต์อย่างง่ายมันจะรันและกำหนดพา ธ ใหม่ให้กับPATH
ตัวแปรสภาพแวดล้อม หากต้องการตรวจสอบเรียกใช้ env และดูPATH
ค่าในรายการ
ที่เกี่ยวข้อง:
source /etc/environment
เพื่อโหลดการเปลี่ยนแปลงอีกครั้ง
ฉันคิดว่าวิธีบัญญัติใน Ubuntu คือ:
สร้างไฟล์ใหม่ภายใต้ /etc/profile.d/
sudo vi /etc/profile.d/SCRIPT_NAME.sh
เพิ่มที่นั่น:
export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
และให้สิทธิ์ดำเนินการ
sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
สำหรับมือใหม่ที่สมบูรณ์ (เช่นฉัน) ที่คุ้นเคยกับ GUI:
$HOME
โฟลเดอร์ของคุณ.profile
และคลิกที่เปิดด้วยโปรแกรมแก้ไขข้อความPATH="$PATH:/my/path/foo"
เลื่อนไปด้านล่างและเพิ่ม.profile
)$PATH:
บิตซึ่งรวมถึงคำจำกัดความของเส้นทางที่มีอยู่แล้ว
สำหรับตัวแปรสภาพแวดล้อมแบบถาวรมีให้สำหรับผู้ใช้บางรายเท่านั้น ฉันขอแนะนำเอกสารทางการของ Ubuntu
https://help.ubuntu.com/community/EnvironmentVariables
อ้างถึงเอกสารข้างต้นฉันได้ตั้งค่าเครื่องมือเส้นทาง Android SDKของฉันโดย:
~/.pam_environment
ไฟล์ในโฮมไดเร็กตอรี่PATH DEFAULT=${PATH}:~/android-sdk-linux/tools
เนื้อหาที่เป็นใส่บรรทัดนั้นใน~/.bashrc
ไฟล์ของคุณ
มันจะได้รับที่มาเมื่อคุณเปิดเทอร์มินัล
แก้ไข : ตามความคิดเห็นด้านล่างสำหรับการตั้งค่าทั่วไปที่จะใช้กับเชลล์ทั้งหมด (รวมถึงเมื่อคุณกดAlt- เป็นF2Unity) ให้เพิ่มบรรทัดลงใน~/.profile
ไฟล์ของคุณ อาจไม่ควรทำทั้งสองอย่างเนื่องจากพา ธ จะถูกเพิ่มเข้ากับPATH
สภาพแวดล้อมของคุณสองครั้งหากคุณเปิดเทอร์มินัล
$HOME/.profile
การตั้งค่าส่วนบุคคลหรือ/etc/profile
สำหรับผู้ใช้ทั้งหมด แต่ถ้ามันจำเป็นสำหรับการทุบตีเท่านั้นฉันคิดว่าจะใช้งานได้
~/.bashrc
จะมีเฉพาะในเทอร์มินัลที่คุณเปิด เช่นถ้าคุณกด Alt + F2 และลองเรียกใช้คำสั่งจาก dir นั้นมันจะไม่พบมัน หากคุณตั้งค่าไว้ใน~/.profile
หรือ~/.pam_environment
เซสชั่นคำพังเพย (หรือสิ่งที่ DE คุณใช้) จะสืบทอดมา การต่อท้าย PATH ในนั้น~/.bashrc
ยังมีข้อเสียเปรียบว่าถ้าคุณเปิด / exec bash แบบโต้ตอบจากเปลือก bash แบบโต้ตอบอื่นมันจะถูกผนวกหลายครั้ง
~/.profile
ถูกต้องสำหรับเส้นทางส่วนบุคคลแม้ว่า; นั่นคือสิ่งที่ Ubuntu เพิ่ม~/bin
ไดเรกทอรี และฉันขอสารภาพว่าฉันพูดเกินจริงไปเล็กน้อยในหลายวิธี - เพียงเล็กน้อย
~/.profile
ในกรณีนี้ด้วย
การตั้งค่าระบบกว้างท้ายบรรทัดที่ส่วนท้ายของexport PATH=/path/you're/adding:$PATH
/etc/profile
~/.bash_profile
หากต้องการเพิ่มไดเรกทอรีสำหรับเฉพาะผู้ใช้เข้าสู่ระบบในท้ายบรรทัดเดียวกัน
การเพิ่มลงใน. bashrc จะใช้งานได้ แต่ฉันคิดว่าวิธีดั้งเดิมในการตั้งค่าตัวแปรพา ธ ของคุณอยู่ใน. bash_profile โดยเพิ่มบรรทัดต่อไปนี้
PATH=$PATH:/my/path/foo
export PATH
ตามหัวข้อนี้ปรากฏว่าพฤติกรรมของ Ubuntu แตกต่างจาก RedHat และโคลนเล็กน้อย
.bashrc
ติดมัน.bashrc
แทน เทอร์มินัล GUI ใน Ubuntu ไม่ใช่การเข้าสู่ระบบเชลล์ดังนั้น.bash_profile
จะไม่ถูกเรียกใช้
.bash_profile
ไม่มีคุณไม่จำเป็นต้อง หาก bash ไม่พบ a .bash_profile
(เมื่อคุณเข้าสู่ระบบแบบโต้ตอบ) ระบบจะค้นหา.profile
และใช้สิ่งนั้นแทน โดยค่าเริ่มต้นคุณจะมี.profile
และ.bashrc
ใน Ubuntu และ.profile
เป็นสถานที่ที่ถูกต้องในการตั้งค่าตัวแปรสภาพแวดล้อมหากเราไม่สนใจ pam_env
sudo vi /etc/profile.d/SCRIPT_NAME.sh
เพิ่มที่นั่น
export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH
sudo nano /etc/profile.d/SCRIPT_NAME.sh
ง่ายสำหรับผู้เริ่มต้น
gksu gedit /etc/profile.d/SCRIPT_NAME.sh
จะง่ายยิ่งขึ้น
เมื่อใดก็ตามที่ฉัน "ติดตั้ง" โฟลเดอร์ของสคริปต์ BASH ฉันทำตามรูปแบบของการทดสอบสำหรับ$HOME/bin
โฟลเดอร์ที่อยู่ในไฟล์. profile ส่วนใหญ่ใน Ubuntu รุ่นล่าสุด ฉันตั้งค่าการทดสอบที่ดูเหมือนว่า
if [ -d "/usr/scripts" ]; then
PATH="/usr/scripts:$PATH"
fi
มันใช้งานได้ประมาณ 100% ของเวลาและปล่อยให้ฉันเป็นอิสระในการแก้ไขข้อความใน GUI ด้วยการ "แทนที่ทั้งหมด" อย่างรวดเร็วฉันควรจะตัดสินใจย้ายที่/scripts
ใดที่หนึ่งใกล้กับ$HOME
โฟลเดอร์ของฉัน ฉันไม่ได้ติดตั้งอูบุนตู 6 ตัว แต่มี "พรุ่งนี้เสมอ" S
BZT
วิธีที่แนะนำในการแก้ไขของคุณPATH
คือจาก/etc/environment
ไฟล์
ตัวอย่างผลลัพธ์ของ/etc/environment
:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
ตัวอย่างเช่นหากต้องการเพิ่มเส้นทางใหม่ของ /home/username/mydir
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"
จากนั้นรีบูทพีซีของคุณ
ตัวแปรสภาพแวดล้อมทั้งระบบ
ไฟล์ที่เหมาะสมสำหรับการตั้งค่าตัวแปรสภาพแวดล้อมที่ส่งผลกระทบต่อระบบโดยรวม (แทนที่จะเป็นผู้ใช้เฉพาะ) คือ / etc / environment อีกทางเลือกหนึ่งคือการสร้างไฟล์สำหรับวัตถุประสงค์ในไดเรกทอรี /etc/profile.d
/ etc / สภาพแวดล้อม
ไฟล์นี้มีความหมายโดยเฉพาะสำหรับการตั้งค่าตัวแปรสภาพแวดล้อมทั้งระบบ ไม่ใช่ไฟล์สคริปต์ แต่ประกอบด้วยนิพจน์การมอบหมายหนึ่งรายการต่อบรรทัด
หมายเหตุ:การขยายตัวแปรไม่ทำงานใน / etc / environment
ข้อมูลเพิ่มเติมสามารถดูได้ที่นี่: EnvironmentVariables
เปิดเทอร์มินัลของคุณพิมพ์gedit .profile
และใส่ต่อไปนี้:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
#the following line add Bin where you dont have a Bin folder on your $HOME
PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"
ปิดและเปิด terminal มันควรจะทำงาน
ใส่ลงใน~/.bashrc
หรือของคุณคุณใช้ rc (หรือไปก่อนหน้า~/.profile
) และ~/.xsessionrc
ดังนั้นมันจะทำงานใน X (เปลือกนอก)
แม้ว่าสคริปต์ของระบบจะไม่ใช้สิ่งนี้ แต่อย่างใดในกรณีที่ต้องการเพิ่มพา ธ (เช่น$HOME/bin
) ไปยังตัวแปรสภาพแวดล้อม PATH คุณควรใช้
PATH="${PATH:+${PATH}:}$HOME/bin"
สำหรับการต่อท้าย (แทนPATH="$PATH:$HOME/bin"
) และ
PATH="$HOME/bin${PATH:+:${PATH}}"
สำหรับการเตรียมการ (แทนPATH="$HOME/bin:$PATH"
)
วิธีนี้จะหลีกเลี่ยงลำไส้ใหญ่ที่นำหน้า / ต่อท้ายเมื่อ$PATH
ไม่ว่างในตอนแรกซึ่งอาจมีผลกระทบที่ไม่พึงประสงค์
สำหรับ Ubuntu ให้แก้ไข~/.bashrc
และเพิ่มบรรทัดต่อไปนี้
. ~/.bash_profile
จากนั้นแก้ไข. bash_profile ตามที่คุณต้องการ .....
.bash_profile
ตามที่คุณต้องการ" ว่าสิ่งที่ฉันต้องทำไป.bash_profile
?
.profile
หรือควรจะมา.bash_profile
.bashrc
ไม่ใช่วิธีอื่น ๆ