คำตอบของไมค์น่าจะใช้ได้ แต่มันก็คุ้มค่าที่จะชี้ให้เห็นว่าคุณสามารถทำสิ่งนี้ได้อย่างระมัดระวังโดยเลือกไฟล์เริ่มต้นที่จะนำข้อมูล verbose มาจากหน้า bash man:
เมื่อ bash ถูกเรียกใช้เป็นเชลล์ล็อกอินแบบโต้ตอบหรือเป็นเชลล์ที่ไม่มีการโต้ตอบกับตัวเลือก --login มันจะอ่านและเรียกใช้คำสั่งจากไฟล์ / etc / profile ก่อนหากไฟล์นั้นมีอยู่ หลังจากอ่านไฟล์นั้นจะค้นหา ~ / .bash_profile, ~ / .bash_login และ ~ / .profile ตามลำดับและอ่านและเรียกใช้คำสั่งจากไฟล์แรกที่มีอยู่และอ่านได้ ตัวเลือก --noprofile อาจถูกใช้เมื่อเชลล์เริ่มต้นเพื่อยับยั้งพฤติกรรมนี้
เมื่อเชลล์เชิงโต้ตอบที่ไม่ใช่เชลล์ล็อกอินเริ่มทำงาน bash จะอ่านและดำเนินการคำสั่งจาก ~ / .bashrc หากไฟล์นั้นมีอยู่ สิ่งนี้อาจถูกยับยั้งโดยใช้ตัวเลือก --norc ตัวเลือกไฟล์ --rcfile จะบังคับให้ทุบตีเพื่ออ่านและดำเนินการคำสั่งจากไฟล์แทน ~ / .bashrc
เครื่องมือ sftp / scp เริ่มต้นเชลล์ที่ไม่ใช่การเข้าสู่ระบบแบบโต้ตอบดังนั้น. bashrc จะได้รับแหล่งที่มา หลายแหล่งที่มา. bashrc จาก. bash_profile หรือกลับกันดังนั้นมันอาจทำให้สับสนได้ เคล็ดลับที่ดีสำหรับการทดสอบความสะอาดของสภาพแวดล้อมการเข้าสู่ระบบของคุณคือการ ssh ด้วยคำสั่งซึ่งจำลองแบบเดียวกับการเชื่อมต่อ scp / sftp ตัวอย่างเช่น: ssh myhost /bin/true
จะแสดงสิ่งที่ scp / sftp เห็นเมื่อพวกเขาเชื่อมต่อ
ตัวอย่างง่ายๆ:
insyte@mazer:~$ echo "echo Hello from .profile" > .profile
insyte@mazer:~$ echo "echo Hello from .bashrc" > .bashrc
sazerac:~ insyte$ ssh mazer /bin/true
Hello from .bashrc
sazerac:~ insyte$
insyte@mazer:~$ rm .bashrc
sazerac:~ insyte$ ssh mazer /bin/true
sazerac:~ insyte$
การทดสอบครั้งแรกจะทำให้ scp / sftp / rsync เป็นต้นแตก รุ่นที่สองจะทำงานได้ดี
.bashrc
จะ source'd สำหรับหรือscp
ssh host command