Я работаю в среде Windows, но предпочитаю использовать bash в cygwin в качестве оболочки. Чтобы перейти к длинному пути, мне задают в форме окна, что я набираю:
cd $(cygpath -u 'Z:\Some\long\windows\path')
.. вставка пути к окнам из буфера обмена. Так как я ленив, я попытался сделать так:
#!/usr/bin/env bash
if [ -z "$1" ]; then
exit 0
else
TGT=$(cygpath -u $1)
cd $TGT
fi
exit 0
... потом понял, что компакт-диск находится в оболочке, в которой работает мой скрипт, а не в той, из которой я его вызвал, поэтому не имеет желаемого эффекта. Как мне заставить это работать?
Вы можете просто установить его как псевдоним:
alias cd='cd $(cygpath -u "$1")'
Вставьте это в свой .bashrc
file или где бы то ни было еще у вас установлены псевдонимы, и вы должны быть золотыми.
В противном случае вам нужно будет поместить каталог с путем к вашему пользовательскому сценарию раньше на вашем пути, чем каталог с фактической командой cd (я думаю, что cygwin устанавливает путь в .bash_profile
); что, вероятно, не будет работать, поскольку cd - встроенная оболочка.
Простой cd 'Z:\Some\long\windows\path'
должно просто работать на самом деле. Вы можете включить nodosfilewarning
вариант хотя.