Каково различие между .bashrc, .bash_profile, и .environment?

Вы можете использовать np.in1d с np.nonzero -

np.nonzero(np.in1d(A,B))[0]

Вы также можете использовать np.searchsorted , если вы хотите сохранить порядок -

np.searchsorted(A,B)

Для общего случая, когда A & amp; B - несортированные массивы, вы можете ввести параметр sorter в np.searchsorted, например:

sort_idx = A.argsort()
out = sort_idx[np.searchsorted(A,B,sorter = sort_idx)]

Я бы добавил в свою любимую broadcasting тоже в миксе, чтобы решить общий случай -

np.nonzero(B[:,None] == A)[1]

Прогон образца -

In [125]: A
Out[125]: array([ 7,  5,  1,  6, 10,  9,  8])

In [126]: B
Out[126]: array([ 1, 10,  7])

In [127]: sort_idx = A.argsort()

In [128]: sort_idx[np.searchsorted(A,B,sorter = sort_idx)]
Out[128]: array([2, 4, 0])

In [129]: np.nonzero(B[:,None] == A)[1]
Out[129]: array([2, 4, 0])

130
задан Adam Rosenfield 6 January 2009 в 03:58
поделиться

5 ответов

Основное различие для файлов конфигурации оболочки - то, что некоторые только читаются оболочками "входа в систему" (например, когда Вы входите в систему от другого хоста или входа в систему в текстовой консоли локальной машины Unix). они - те названные, скажем, .login или .profile или .zlogin (в зависимости от которой оболочки Вы используете).

Затем у Вас есть файлы конфигурации, которые прочитаны "интерактивными" оболочками (как в, подключенные к терминалу (или псевдотерминал в случае, скажем, эмулятора терминала, работающего под системой управления окнами). это, те с именами как .bashrc, .tcshrc, .zshrc, и т.д.

bash усложняют, это в том .bashrc только считано оболочкой, это и интерактивное и невход в систему , таким образом, Вы найдете, что большинство людей заканчивает тем, что говорило их .bash_profile также читать .bashrc с чем-то как [1 122]

[[ -r ~/.bashrc ]] && . ~/.bashrc

, Другие оболочки ведут себя по-другому - например, с [1 111], .zshrc всегда читается из интерактивной оболочки, является ли это входом в систему один или нет.

страница руководства для удара объясняет обстоятельства, при которых читается каждый файл. Да, поведение обычно последовательно между машинами.

.profile просто имя файла сценария входа в систему, первоначально используемое [1 114]. bash, будучи обычно назад совместимым с [1 116], будет читать .profile, если Вы будете существовать.

73
ответ дан 24 November 2019 в 00:25
поделиться

Я нашел, что информация о .bashrc и .bash_profile здесь подвела итог его:

.bash_profile выполняется, когда Вы входите в систему. Наполните Вас помещенный, там мог бы быть Ваш ПУТЬ и другие важные переменные среды.

.bashrc используется для не, входят в оболочки. Я не уверен, что это означает. Я знаю, что Redhat выполняет его каждый раз, Вы запускаете другую оболочку (su этому пользователю, или просто называющий удар снова) Вы могли бы хотеть поместить псевдонимы там, но снова я не уверен, что это означает. Я просто игнорирую его сам.

.profile является эквивалентом .bash_profile для корня. Я думаю, что имя изменилось для разрешения другим оболочкам (csh, sh, tcsh) используют его также. (Вам не нужен тот как пользователю)

существует также .bash_logout, который выполняется в, да хорошее предположение... выходит из системы. Вы могли бы хотеть остановить deamons или даже сделать немного обслуживания. Можно также добавить "ясный" там, если Вы хотите очистить экран, когда Вы выходите из системы.

Также существует полное, следуют каждому из файлов конфигураций здесь

, Это, вероятно, даже distro.-иждивенец, не, все дистрибутивы принимают решение иметь каждую конфигурацию с ними, и некоторые имеют еще больше. Но когда у них есть то же имя, они обычно включают то же содержание.

7
ответ дан 24 November 2019 в 00:25
поделиться

Это просто. Это объяснено в man bash:

/bin/bash
       The bash executable
/etc/profile
       The systemwide initialization file, executed for login shells
~/.bash_profile
       The personal initialization file, executed for login shells
~/.bashrc
       The individual per-interactive-shell startup file
~/.bash_logout
       The individual login shell cleanup file, executed when a login shell exits
~/.inputrc
       Individual readline initialization file

оболочки Входа в систему - те, которые читаются тот, в который Вы входите (так, они не выполняются при простом запуске xterm, например). Существуют другие способы войти в систему. Например, с помощью X менеджеров по оформлению. У этого есть другие способы считать и экспортировать переменные среды во время входа в систему.

Также читает INVOCATION глава в руководстве. Это говорит "Следующие параграфы, описывают, как удар выполняет свои файлы запуска". , я думаю, что это - место - на :) Это объясняет, что "интерактивная" оболочка также.

Bash не знает приблизительно .environment. Я подозреваю, что это - файл Вашего распределения, для установки переменных среды, независимых от оболочки, которой Вы управляете.

48
ответ дан 24 November 2019 в 00:25
поделиться

Хорошее место для взгляда на является страницей справочника удара. Здесь интерактивная версия. Ищите раздел "INVOCATION".

2
ответ дан 24 November 2019 в 00:25
поделиться

Классически, ~/.profile используется Оболочкой Bourne и вероятно поддерживается Bash как мера прежней версии. Снова, ~/.login и ~/.cshrc использовались Оболочкой C - я не уверен, что Bash использует их вообще.

Эти ~/.bash_profile использовался бы однажды, при входе в систему. ~/.bashrc сценарий прочитан каждый раз, когда оболочка запускается. Это походит /.cshrc для Оболочки C.

Одно последствие - то, что материал в ~/.bashrc должен быть максимально легок (минимальный) для сокращения издержек при запуске оболочки невхода в систему.

я верю ~/.environment, файл является файлом совместимости для Korn Shell.

9
ответ дан 24 November 2019 в 00:25
поделиться