เราจะได้รับ~/.bashrc
ชื่อแทนเพื่อประเมินการ$()
ทดแทนในเวลาทำงานแทนที่จะเป็นช่วงเวลาที่ดำเนินการ ~ / .bashrc (เมื่อเปิดเทอร์มินัล)?
ฉันรันคำสั่งนี้บ่อยพอที่ฉันต้องการเพิ่มนามแฝง:
svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff
อย่างไรก็ตามเมื่อฉันเพิ่มลง~/.bashrc
ในนามแฝงฉันเห็นว่าการประเมินผลนั้นได้รับการกำหนดค่าตายตัวในค่าที่พวกเขามีในขณะที่ฉันเปิดเทอร์มินัล:
$ alias
alias svnbranch='svn diff -r 178184:HEAD svn+ssh://branches/t4252 | colordiff'
ถ้าฉันเปิดเทอร์มินัล~
ฉันจะได้รับข้อผิดพลาด:
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
$ alias
alias svnbranch='svn diff -r :HEAD | colordiff'
$
ฉันได้ลองใช้นามแฝงสองรูปแบบทั้งสองแบบนี้~/.bashrc
มีผลเหมือนกัน (ตามที่ฉันคาดไว้):
alias svnbranch="svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff"
alias svnbranch="svn diff -r `svn info | grep ^Revision | awk {'print $2'}`:HEAD `svn info | grep ^URL | awk {'print $2'}` | colordiff"
หนึ่งจะได้รับ~/.bashrc
ชื่อแทนในการประเมินการ$()
ทดแทนในเวลาทำงาน ?
นอกจากนี้หนึ่งจะค้นหาสถานการณ์นี้ใน Google อย่างไร ฉันพยายาม google บน "bashrc substit", "bashrc lazy substit" และวลีสำคัญอื่น ๆ แต่ฉันไม่พบสิ่งที่ฉันคิดว่าน่าจะเป็นปัญหาที่พบได้บ่อยพอที่จะหาข้อมูล
alias cdp="cd ~/projects"
ฉันจะให้คำตอบบางส่วนที่นี่: ไม่สามารถทำได้ในเชลล์สคริปต์
$HOME/bin
ลงไปPATH
หากคุณมีไดเรกทอรีเช่นนี้