Saya mencoba men-debug apa yang dilakukan bash pada inisialisasi login untuk Linux. Saya telah membaca bahwa "bash -x" akan membuat bash mencetak apa yang dilakukannya, tetapi tidak mencetak perintah dalam file-file bersumber seperti "set -x". Saya tidak dapat menggunakan "set -x" karena inisialisasi berjalan sebelum saya dapat menyebutnya. "bash -x" tampaknya muncul kembali dengan baik di OS X, tapi itu mungkin karena versi bash.
Linux: 3.2.25
OS X: 3.2.48
Berikut adalah kutipan dari perilaku tidak berulang di Linux:
bash -l -x -c 'echo 1'
# ... snip ...
+ for i in '/etc/profile.d/*.sh'
+ '[' -r /etc/profile.d/vim.sh ']'
+ '[' '' ']'
+ . /etc/profile.d/vim.sh
+ for i in '/etc/profile.d/*.sh'
+ '[' -r /etc/profile.d/which-2.sh ']'
+ '[' '' ']'
+ . /etc/profile.d/which-2.sh
# ... snip ...
Perhatikan bagaimana /etc/profile.d/vim.sh bersumber, tetapi perintahnya tidak dicetak. Apakah ada solusi tanpa peningkatan? Apakah ini disebabkan oleh perbedaan versi?