Как заставить CD работать внутри скрипта bash - PullRequest
0 голосов
/ 21 июня 2019

Постановка проблемы: создайте псевдоним cdff, который найдет первое вхождение каталога (заданного в качестве параметра) и назначит его переменной FILEPATH.

Псевдоним cdf = 'cd $ FILEPATH' должен перейти в этот каталог.

Например, команда 'cdff TestDir' должна установить FILEPATH = Dir1 / Dir2 / TestDir

Так что, если я хочу перейти к TestDir, я просто запускаю 'cdff TestDir', а затем 'cdf' и ожидаю изменить каталог на Dir1 / Dir2 / TestDir, так как я экспортирую переменную FILEPATH

В .bashrc я создаю этот псевдоним,

alias cdff = '. / Cdfindfirstoccurance.sh'

псевдоним cdf = 'cd $ FILEPATH'

cdfindfirstoccurance.sh

export FILEPATH = `найти. -name " $ 1 " -print -quit` # Установить переменную FILEPATH для последующего использования псевдонимом cdf

echo "FILEPATH: $ {FILEPATH}"

# cd $ {FILEPATH} # Я понимаю, почему это не сработает.

Поскольку я экспортирую переменную FILEPATH при выполнении cdff, я ожидал, что псевдоним cdf просто сработает. После выполнения cdff при выводе «echo $ FILEPATH» он просто пуст.

EDIT: Лучший способ решить это очень приветствуется. Прямо сейчас единственный способ - использовать команду find, а затем скопировать вывод с помощью мыши и передать его cd. Я стараюсь не использовать мышь и тоже не хочу набирать весь путь.

EDIT2: Как уже упоминалось в комментариях, изменение псевдонима с

alias cdff = '. / Cdfindfirstoccurance.sh'

до

alias cdff = 'source cdfindfirstoccurance.sh'

работал просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...