คำถามติดแท็ก bashrc

คำถามเฉพาะของ Bourne อีกครั้งของเชลล์ใน GNU เมื่อเทียบกับเชลล์ Bourne / POSIX อื่น ๆ สำหรับคำถามเกี่ยวกับเชลล์ Unix โดยทั่วไปให้ใช้ / เชลล์แท็กแทน

11
วิธีเพิ่มเส้นทางไปยัง PATH อย่างถูกต้องได้อย่างไร
ฉันสงสัยว่าจะต้องเพิ่มพา ธ ใหม่ในPATHตัวแปรสภาพแวดล้อมที่ไหน ฉันรู้ว่านี่สามารถทำได้โดยการแก้ไข.bashrc(ตัวอย่าง) แต่ยังไม่ชัดเจนว่าจะทำอย่างไร ทางนี้: export PATH=~/opt/bin:$PATH หรือสิ่งนี้ export PATH=$PATH:~/opt/bin




3
อะไรคือความแตกต่างระหว่าง ~ / .profile, ~ / .bashrc, ~ / .bash_profile, ~ / .gnomerc, / etc / bash_bashrc, / etc / screenrc …?
คำตอบสำหรับคำถามเกี่ยวกับSOและaskubuntuพร้อมกับ poking through (และส่วนหัวอ่านของ) $HOMEและ/etc/ระบุจำนวนไฟล์ที่สามารถใช้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมรวมถึง: ~/.profile ~/.bashrc ~/.bash_profile ~/.gnomerc ~/.Rprofile /etc/bash_bashrc /etc/profile /etc/screenrc ฉันรวบรวมไฟล์ที่ใช้/etc/งานได้สำหรับผู้ใช้ทุกคนในขณะที่ไฟล์$HOMEนั้นเป็นไฟล์เฉพาะของผู้ใช้ ฉันยังรวบรวมที่.profileโหลดเมื่อเข้าสู่ระบบในขณะที่.bashrcโหลดเมื่อ/bin/bashถูกดำเนินการ ฉันยังเข้าใจว่าโปรแกรมต่าง ๆ มีไฟล์การตั้งค่าที่แตกต่างกัน (เช่น.Rprofileสำหรับ R) แต่ฉันขอขอบคุณการชี้แจงบางอย่าง: มี*rcและ*profileไฟล์ที่แตกต่างกัน? ขอบเขตของไฟล์ดังกล่าวคืออะไร (เช่นไฟล์ใดที่มักใช้กับ Linux) มีลำดับชั้น (เช่น.bashrcเขียนทับชุดตัวแปร.settings) การอ้างอิงที่ดีสำหรับไฟล์ประเภทนี้คืออะไร? สำหรับตัวเลือกในไฟล์เหล่านี้? คำถามที่เชื่อมโยง "วิธีเข้าถึงตัวแปรสภาวะแวดล้อม bash จากภายใน R ใน emacs-ess" "ความแตกต่างระหว่างการเปิดใช้แอปพลิเคชันจากแป้นพิมพ์ลัดกับเทอร์มินัลหรือไม่"

3
ทำไม bashrc ตรวจสอบว่าเชลล์ปัจจุบันมีการโต้ตอบหรือไม่?
บน Arch ของฉันติดตั้ง/etc/bash.bashrcและ/etc/skel/.bashrcมีบรรทัดเหล่านี้: # If not running interactively, don't do anything [[ $- != *i* ]] && return บน Debian /etc/bash.bashrcมี: # If not running interactively, don't do anything [ -z "$PS1" ] && return และ/etc/skel/.bashrc: # If not running interactively, don't do anything case $- in *i*) ;; *) …
62 bash  bashrc 

3
รีเฟรช alias และฟังก์ชั่นใหม่หลังจากกำหนด alias และฟังก์ชั่นใหม่หรือไม่?
เมื่อฉันกำหนดนามแฝงใหม่ใน.bash_aliasesไฟล์หรือฟังก์ชั่นใหม่ใน.bashrcไฟล์มีคำสั่งรีเฟรชที่จะสามารถใช้นามแฝงหรือฟังก์ชั่นใหม่ได้ทันทีโดยไม่ต้องปิดเทอร์มินัล (ในกรณีของฉัน xfce4 เทอร์มินัล และในระหว่างการทำงาน)

3
ใช้การส่งออกใน. bashrc
ฉันสังเกตเห็น.bashrcว่ามีบางบรรทัดexportอยู่ข้างหน้าพวกเขาเช่น export HISTTIMEFORMAT="%b-%d %H:%M " ... export MYSQL_HISTFILE="/root/.mysql_history" ในขณะที่คนอื่นไม่เช่น HISTSIZE=100000 ผมสงสัยว่าถ้าครั้งแรกนี้ถูกต้องและสองสิ่งที่เป็นกฎสำหรับการใช้ในexport.bashrc

4
ฉันจะสร้างฟังก์ชั่นท้องถิ่นใน bashrc ของฉันได้อย่างไร
. bashrc ของฉันมีรหัสบางส่วนที่ซ้ำซ้อนดังนั้นฉันจึงใช้ฟังก์ชั่นเพื่อทำให้มันง่ายขึ้น do_stuff() { local version=$1 export FOO_${version}_X="17" export FOO_${version}_Y="42" } do_stuff '5.1' do_stuff '5.2' อย่างไรก็ตามตอนนี้เมื่อฉันใช้เชลล์ชื่อ "do_stuff" อยู่ในขอบเขตดังนั้นฉันจึงสามารถแท็บเติมและเรียกใช้ฟังก์ชันนั้น (อาจทำให้ตัวแปรสภาพแวดล้อมของฉันสับสน) มีวิธีทำให้ "do_stuff" มองเห็นได้เฉพาะภายใน. bashrc หรือไม่
40 bash  bashrc 

4
ฉันจะค้นหาประกาศนามแฝงปลอมได้อย่างไร
ฉันพยายามที่จะหาที่เฉพาะเจาะจงaliasได้รับการประกาศ ฉันได้ค้นหาสถานที่ตามปกติทั้งหมดที่ฉันรู้ว่าจะหาชื่อแทน: ~ / .bashrc ~ / .bash_profile / etc / bashrc / etc / รายละเอียด โดยไม่มีโชค ฉันรู้ว่ามันเป็นaliasเพราะเมื่อฉันทำwhich COMMANDฉันได้รับ: alias COMMAND='/path/to/command' /path/to/command มีวิธีการค้นหาไฟล์ที่ประกาศaliasเพียงรู้aliasชื่อหรือไม่?
37 bash  alias  bashrc 

3
ฉันจะกำจัดคำนำหน้าของ Cygwin / cygdrive ในทุกเส้นทางได้อย่างไร
ฉันเปลี่ยนมาใช้ Cygwin จาก bash shell ที่มาพร้อมกับ Git สำหรับ Windows และพบปัญหาแปลก ๆ มีคนคิดว่าเป็นความคิดที่ดีที่จะเพิ่ม/cygdrive/ในทุกเส้นทางในขณะที่ฉันคิดว่ามันเป็นความคิดที่น่าเกลียดอย่างน่ากลัว ฉันสามารถระบุได้ว่าฉันสามารถแก้ไขได้บางส่วนด้วยการเพิ่ม mount --change-cygdrive-prefix / export HOME=/c/Users/BZISAD0 ใน. bashrc ของฉัน แต่ถ้าฉันดูตัวแปร PATH ทุกอย่างยังคงมี / cygdrive / อยู่ ฉันคิดว่าฉันสามารถเขียนสคริปต์เพื่อแก้ไข PATH แต่นั่นเป็นสิ่งที่น่าสนใจยิ่งกว่าสิ่งที่ฉันทำไปแล้ว มีก็จะเป็นวิธีที่ดีกว่าและผมสวยมั่นใจมีตั้งแต่ Git ของเปลือกทุบตีใช้ (AFAIK) รุ่นเก่าของ Cygwin และมีการกำหนดค่าอย่างใดที่จะไม่ย่อหน้า/cygdriveทุกที่ ดังนั้นฉันจะเปลี่ยนลูกบิด "ดูด" เป็นศูนย์ได้อย่างไร
36 path  cygwin  bashrc 

8
ทำคณิตศาสตร์อย่างง่ายบนบรรทัดคำสั่งโดยใช้ฟังก์ชัน bash: $ 1 หารด้วย $ 2 (อาจใช้ bc)
บางครั้งฉันต้องหารจำนวนหนึ่งด้วยอีก มันจะดีมากถ้าฉันสามารถกำหนดฟังก์ชัน bash สำหรับสิ่งนี้ได้ จนถึงตอนนี้ฉันถูกบังคับให้ใช้นิพจน์เช่น echo 'scale=25;65320/670' | bc แต่มันจะดีมากถ้าฉันสามารถกำหนดฟังก์ชั่น. bashrc ที่ดูเหมือน divide () { bc -d $1 / $2 }

3
Grep หลากสี
ฉันพยายามเรียกคำสั่ง grep แต่ละคำเพื่อเน้นว่าผลลัพธ์เป็นสีที่ต่างกัน ฉันสามารถทำได้ด้วยตนเองโดยใช้บรรทัดดังนี้: ls -l GREP_COLORS='mt=01;32' grep c | GREP_COLORS='mt=01;31' grep o | GREP_COLORS='mt=01;34' grep n | GREP_COLORS='mt=01;36' grep f cตัวละครทุกตัวจะถูกเน้นด้วยสีเขียวและoตัวละครทุกตัวจะถูกเน้นด้วยสีแดง ฯลฯ ... เพื่อให้ตัวอย่างนี้ทำงานคุณจะต้องแน่ใจว่าคุณมี --color=alwaysคำสั่ง grep อยู่เสมอ ฉันได้ตั้งค่านี้ใน.bashrc grep ของฉันดังนั้นจะมีสี: export GREP_OPTIONS='--color=always' สิ่งที่ฉันพยายามทำให้สำเร็จคือห่อฟังก์ชันนี้ด้วยนามแฝงเพื่อให้ฉันสามารถโทรได้ grepและมีGREP_COLORSค่าที่แตกต่างกันในแต่ละครั้ง ฉันเข้าใจการพิจารณาของเชลล์จำนวนมากสำหรับ grep piped ใหม่แต่ละอันและฉันพยายามทำสิ่งนี้โดยการสร้างไฟล์บางไฟล์ (หนึ่งสำหรับแต่ละสี) เพื่อระบุว่าพวกมันถูกใช้ไปแล้ว ฉันได้พยายามมาบ้างแล้ว แต่ก็แปลกแล้วอันนี้ดูเหมือนจะทำงานได้ดีที่สุด ฉันมีสิ่งนี้ในของฉัน.bashrc : alias mg="mygrep" mygrep(){ # define …
30 bash  shell  grep  pipe  bashrc 

3
คำสั่ง sudo ไม่ได้มา /root/.bashrc
ฉันได้เพิ่มพา ธ ที่กำหนดเองไปยังPATHตัวแปรในไฟล์ /root/.bashrc ของฉัน เมื่อฉันทำsudo su; echo $PATHมันจะแสดงรายการ '/ path / to / custom / bins' แต่ฉันทำsudo sh -c 'echo $PATH'มันแสดงให้เห็นว่า /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin เส้นทางโฟลเดอร์ที่เพิ่มในไฟล์. bashrc จะมองไม่เห็น คำสั่ง sudo ไม่มีสภาพแวดล้อมเดียวกันกับผู้ใช้รูทหรือไม่?
27 sudo  bashrc 

6
sftp ให้ข้อผิดพลาด:“ ข้อความที่ได้รับมานานเกินไป” และอะไรคือสาเหตุ?
ฉันสามารถทำsftpเมื่อวานนี้กับกล่อง RHEL 5.4 (RedHat) และวันนี้ฉันทำไม่ได้ ข้อความเป็น"Received message too long 778199411"และหลังจากการตรวจสอบบางอย่างมันเป็นเพราะกล่อง RHEL ของฉัน.bashrcมีสายecho "running .bashrc"- หรือสะท้อนอะไรเลยฉันคิดว่า ดังนั้นทำไมจะพิมพ์ออกบรรทัดส่งผลกระทบต่อsftp? มันให้ความรู้สึกเหมือนเป็นปัญหาการออกแบบเมื่อพิมพ์.bashrcงานในสถานการณ์อื่น ๆ เช่นการล็อกอินหรือsshมันยากที่จะติดตามเมื่อsftpล้มเหลวด้วยเหตุผลแปลก ๆ ดังนั้นคำถามคือทำไมการพิมพ์ออกบรรทัดสาเหตุข้อผิดพลาดดังกล่าวและสิ่งที่ถ้าเรายังคงชอบที่จะพิมพ์ออกในบางสิ่งบางอย่าง.bashrc? (ส่วนใหญ่จะเห็นเมื่อไฟล์นี้ได้รับมา / ดำเนินการ)
26 sftp  bashrc 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.