cd funciona no shell, mas não no script [duplicado]

3

Frequentemente tenho que cd de $HOME para um caminho de diretório longo específico. Então eu pensei em colocar um cdscript em $ HOME para fazer chegar um pouco mais rápido.

cdscript:

#!/bin/sh
directory="/some/big/long directory path/that/I/use/frequently"
cd "$directory"

Definir permissões: chmod 700 cdscript

./cdscript não faz nada. o que estou perdendo? (Sim, esses espaços no caminho existem, e eu posso copiar e colar as linhas individuais exatas no shell com sucesso, então o caminho também existe). Além disso, é mais Unixey apenas criar um link simbólico para o diretório em vez do script acima e cd para o link?

    
por Escher 23.12.2014 / 13:41

3 respostas

4

apenas fazendo

./cdscript

não funciona. basicamente você bifurcou um novo shell, no qual você cd, em seguida, o shell (e novo diretório de trabalho) sair.

Você precisa usar

. ./cdscript

(há um ponto principal e um espaço)

O primeiro ponto significa: execute ./cdscript como se eu tivesse digitado. O segundo ponto é necessário se. não está no seu PATH var.

    
por 23.12.2014 / 14:01
4

Seria melhor criar um alias para isso dentro do seu shell. Por exemplo, em .bashrc , você poderia colocar;

alias cdscript='cd /really/long/file/path/'
    
por 23.12.2014 / 14:13
1

O script altera seu diretório de trabalho atual, mas depois é restaurado na saída. Em vez de digitar

cdscript 

tente digitar

 . cdscript

para executar seu script para o resultado desejado.

    
por 23.12.2014 / 14:02