exec bash
в концеСценарий bash работает в своем текущем окружении или в окружении своих дочерних окружений, но никогда на родительском окружении.
Однако этот вопрос часто задают потому, что хотят остаться в приглашении bash в определенном каталоге после выполнения сценария bash из другого каталога.
В этом случае просто выполните дочерний экземпляр bash в конце сценария:
#!/usr/bin/env bash
cd desired/directory
exec bash
Это создаст новую подпрограмму. Введите Ctrl+D или exit
, чтобы вернуться в первую оболочку, в которой изначально был запущен сценарий.
По крайней мере, в новых версиях bash
, exec
в последней строке больше не требуется. Более того, сценарий можно заставить работать с любой предпочитаемой оболочкой, используя переменную окружения $SHELL
. В результате получается:
#!/usr/bin/env bash
cd desired/directory
$SHELL