Как @SatoKatsura указал в своем комментарии, (хакерское) использование less
выводится на stderr
, а grep читает из stdout
. Хотя это плохое решение фактической задачи поиска мертвых символических ссылок, оно может работать, перенаправляя stderr
на stdout
:
less ~/.nvm/versions/node/v5.5.0/lib/node_modules/* 2>&1 | grep "Not a file"
По умолчанию ~/. profile
исходники ~/.bashrc
только если BASH_VERSION
непустой, т.е. (из стандартного . profile
):
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Под Lightdm сценарии запуска выполняются /bin/sh
, который в Debian является симлинком к /bin/dash
. Это означает, что когда ~/.profile
используется при запуске, BASH_VERSION
пуст, и поэтому ~/.bashrc
не используется.
Возможные решения
Запускайте функции из ~/bin
Другое решение (если вам нужно несколько функций при запуске) - иметь
отдельный файл, скажем ~/.startup_functions
, где хранятся все ваши функции, источник файла из .profile
и
выполняйте функции отсюда. Обратите внимание, что, поскольку вы выполняете
их с /bin/dash
, вы должны проверить совместимость.
В противном случае, если вы хотите использовать bash
в качестве стартовой оболочки и источник
.bashrc
при запуске, вы можете установить bash
как
по умолчанию /bin/sh
, т.е. запустите
$ dpkg-reconfigure dash
и следуйте инструкциям.
Если вы хотите определить функции в .bashrc
и запускать их при запуске, обратите внимание, что .profile
загружает .bashrc
только если оболочка интерактивная, если (как по умолчанию) у вас в . bashrc
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
что означает, что вам придется либо удалить этот тест, либо определить нужные вам функции раньше, в любом случае, я бы придерживался запуска функции из ~/bin
.