O cd
está funcionando, mas afeta apenas o processo do script, não o shell a partir do qual você executou o script. Diversas abordagens foram usadas para contornar isso no passado, mas a melhor agora é provavelmente usar uma função shell em vez de um script separado, já que uma função shell será executada dentro do shell original em vez de um processo separado.
Isso seria feito no seu ~/.profile
:
cdprompt()
{
cd $(zenity --entry --entry-text="input directory name")
}
Se você iniciar um novo shell e executar cdprompt
, ele deverá mostrar o prompt do zenity e mudar para o diretório digitado como esperado.
Se você realmente deseja que os comandos vivam em um arquivo separado, outra opção é source
do arquivo em vez de executá-lo:
source newdir.sh
ou
. newdir.sh
Isso diz a bash
para executar os comandos no arquivo dentro do seu processo atual, em vez de iniciar um novo. É normalmente usado para carregar a configuração em vez de executar programas, mas também deve funcionar para isso.