.bashrc выполняют команду после “/bin/bash - вход в систему”

Как насчет этого:

perl -e '
         @files = grep {-f} glob "*";
         @old_files = @files;
         map {
              s!(.*)\.!$1/!;
              s!\.!_!g;
              s!/!.!
             } @files;
         rename $old_files[$_] => $files[$_] for (0..$#files)
        '

Отказ от ответственности: попробуйте его на фиктивном каталоге сначала, я не протестировал его!

1
17.11.2013, 19:48
2 ответа

Когда Вы работаете bash --login, это запускает оболочку входа в систему. Одна из причуд удара относительно файлов инициализации - то, что, если это - оболочка входа в систему, это только читает ~/.bash_profile (или если это не существует ~/.bash_login, или если это не существует также ~/.profile), нет ~/.bashrc даже если оболочка является интерактивной.

Для выполнения кода в оболочке входа в систему вставьте его ~/.bash_profile если это характерно для удара, или в ~/.profile если Вы хотите, чтобы это произошло на ком-либо, входят в систему, даже когда /bin/sh вызывается.

Чтобы удостовериться, что Ваши настройки для интерактивных оболочек применяются, вставляет следующий код Ваш ~/.bash_profile:

case $- in
  *i*) if [ -e ~/.bashrc ]; then . ~/.bashrc; fi;;
esac
if [ -e ~/.profile ]; then . ~/.profile; fi
2
27.01.2020, 23:39

Как улучшение ответа @Gilles для получения рубиновым, чтобы только работать, когда Вы просите его я отредактировал бы копию Вашего .bashrc файла и сказал бы удару использовать его с - rcfile параметр

0
27.01.2020, 23:39

Теги

Похожие вопросы