chdir (<каталог>) не изменяет каталог после выхода для окружения

Вы могли бы хотеть попробовать это:

ls *s?([123])r* *s19r*

Например,

У меня есть каталог со следующими файлами:

% ls | column
s10r    s12r    s14r    s16r    s18r    s1r s2r s4r s6r s8r
s11r    s13r    s15r    s17r    s19r    s23r    s3r s5r s7r s9r

Используя вышеупомянутое упомянутый ls:

% ls *s?([123])r* *s19r*
s19r  s1r  s2r  s3r

См. руководство удара по сопоставлению с образцом для получения дополнительной информации.

8
21.06.2015, 16:59
4 ответа

Ваша программа делает именно то, что вы ей приказываете: она меняет рабочий каталог для самого себя на /home/enedil/projects/algo . Но как только он выходит, рабочий каталог оболочки восстанавливается.

Полагаю, что вы хотите добиться изменения рабочего каталога родительского процесса, т.е. оболочки, не прибегая к простому cd. Есть метод , но как говорит его автор: не делайте этого.

.
15
27.01.2020, 20:08

Текущая рабочая директория локальна для процесса. Поэтому то, что вы хотите, невозможно.

5
27.01.2020, 20:08

Для этого для оболочки используйте команду source (псевдоним на ). ). Она запустит приложение в контексте текущей оболочки вместо создания нового контекста оболочки. Так же вы можете установить переменные окружения. Если вы заметите все сценарии запуска в /etc/rc.d или /etc/init.d, вы увидите множество сценариев, которые включены в другие сценарии командой

. /etc/init.d/rcvars

The . вызывает сценарий /etc/init.d/rcvars, так что все, что он изменяет, остается в текущем окружении.

.
0
27.01.2020, 20:08

Вы также можете использовать переменную окружения CDPATH . Как объясняется в man bash :

   CDPATH The search path for the cd command.  This is  a  colon-separated
          list  of  directories  in  which the shell looks for destination
          directories specified by the cd  command.   A  sample  value  is
          ".:~:/usr".

Так, например, вы можете добавить эту строку в свой ~ / .profile :

CDPATH=~/projects

Теперь вы можете запускать cd projects из любого каталога и перейдите в ~ / projects .

1
27.01.2020, 20:08

Теги

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