cd para um diretório quando seu caminho é inserido como um comando (em vez de um erro “foo é um diretório”)

3

Eu odeio quando bash me dá "duh!" tipo de erro:

foo$ ./bar
-bash: ./bar: is a directory

Eu costumava amar o AmigaOS shell em que "execução" de um diretório simplesmente significava defini-lo como o diretório atual:

foo$ ./bar
bar$ 

É possível em bash ? (sem um número infinito de aliases, é claro).

    
por Kornel 06.08.2009 / 23:38

3 respostas

2

O Bash 4.0 possui a opção autocd .

Do Perguntas frequentes oficiais :

There is a new 'autocd' option that, when enabled, causes bash to attempt to 'cd' to a directory name that is supplied as the first word of a simple command.

Além disso, observe a variável de ambiente CDPATH em man bash para qualquer versão desde, pelo menos, a partir de 2.0. Ele permite que você encurte os comandos cd pesquisando os diretórios listados para o diretório especificado em um comando cd .

    
por 13.08.2009 / 18:57
1

Não sei sobre o bash, mas isso é possível em zsh.

# ~/.zshrc
setopt autocd

Editar : você provavelmente poderia lidar com isso no bash da mesma forma que o ubuntu pega o comando não encontrado

    # bashrc

    function command_not_found_handle {
            if [ -d $1]; then
                cd $1
            else
                echo command not found
            fi
    }
    
por 06.08.2009 / 23:42
0

Como documentação para pesquisas futuras, isso também é possível em csh / tcsh, embora o nome seja diferente:

# ~/.cshrc
set implicitcd

Esse valor também pode ser definido como verbose, que ecoa os comandos cd que são chamados dessa maneira.

    
por 18.07.2018 / 17:07