Próbuję debugować, co bash robi podczas inicjowania logowania dla systemu Linux. Czytałem, że „bash -x” sprawi, że bash wydrukuje to, co robi, ale nie drukuje poleceń w źródłowych plikach, takich jak „set -x”. Nie mogę użyć „set -x”, ponieważ inicjalizacja przebiega przed wywołaniem. „bash -x” wydaje się powtarzać dobrze na OS X, ale może to być spowodowane wersjami basha.
Linux: 3.2.25
OS X: 3.2.48
Oto fragment nierekursywnego zachowania w systemie 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 ...
Zauważ, że źródło /etc/profile.d/vim.sh jest pozyskiwane, ale jego polecenia nie są drukowane. Czy istnieje obejście bez aktualizacji? Czy jest to spowodowane różnicą wersji?