Запустите cd в скрипте и оставайтесь в этом каталоге - команда «source» не помогает - PullRequest
0 голосов
/ 17 декабря 2010

Пробовал, используя ответ, найденный здесь:

Как запустить 'cd' в сценарии оболочки и оставаться там после завершения сценария?

Когда я добавляю команду «source», каталог остается неизменным после выполнения скрипта, независимо от того, выполняю ли я «source» или вызываю скрипт, используя псевдоним, закодированный в cshrc.

Любая помощь очень ценится!

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Как вы можете видеть ниже, убедитесь, что ваш вызов cd не выполняется внутри подоболочки.Если это так, это не сработает, source или нет.

Скрипт с cd в подоболочке

#!/bin/bash

( cd /etc ) # thie exec's in a subshell

Вывод

$ pwd
/home/siegex
$ source ./cdafterend.sh && pwd
/home/siegex

Скрипт с cd , а не в подоболочке

#!/bin/bash

cd /etc # no subshell here

Выход

$ pwd
/home/siegex
$ source ./cdafterend.sh && pwd
/etc
0 голосов
/ 12 января 2011

Необходимо было удалить «/ bin /» из команды cd в этом скрипте, чтобы команда работала как задумано. Удаление этого удаляет проблему subshell для этого сценария. Кроме того, кодирование «$ 1» в команде ls в этом контексте было недопустимым.

...