Я пытаюсь создать сценарий bash, который позволит мне увеличивать путь каждый раз, когда я его выполняю. Вот код, который я должен указать, куда я иду:
#!/bin/bash
#script to augment path
echo "what directories do you want to add:"
read MYNEWPATH
echo "adding the "$MYNEWPATH" directory to PATH"
export PATH
echo "your new env variable is now:"
echo $PATH
exit 0
когда я запускаю его, и cmd запрашивает новый каталог, я вхожу в каталог, который хочу добавить, но он говорит: «строка 6: ПУТЬ: команда не найдена»
Открыт для всех предложений, заранее спасибо.
Кажется, нужно приложить много усилий: PATH+ = "/new/path/1:/new/path/2"
Вам нужно будет добавить новую переменную к старому пути (строка 4), например:
export PATH=$MYNEWPATH:$PATH
Но когда вы запускаете сценарий, BASH запускает новый дочерний процесс, и измененная переменная PATH возвращается в исходное состояние после завершения выполнения сценария. Чтобы справиться с этим, вы можете использовать сценарий для создания исходный файл, а затем source
, чтобы новый путь сохранялся в среде родительской оболочки.
#!/bin/bash
echo "enter new path: "
read MYNEWPATH
echo export PATH=$MYNEWPATH:$PATH > sourcefile
После запуска сценария создается новый файл, который можно использовать в родительской оболочке. Все, что вам нужно сделать оттуда, это source sourcefile
, и ваш новый, измененный путь существует в вашей текущей среде.
Скорее всего, вы захотите настроить код так, чтобы исходный файл создавался в определенном месте. Затем вы можете использовать псевдоним для дальнейшей автоматизации процесса.
Вы также можете найти здесь некоторую помощь: как изменить путь в сценарии оболочки
Вместо того, чтобы вызывать скрипт и затем искать файл, вы можете просто превратить этот скрипт в функцию: pathadd() { PATH+=:$1; printf "%s\n" "New path:" "$PATH"; }; pathadd /foo/bar
Строка 6? Это
export PATH
? Вы уверены, что у вас там нет линииPATH = "$PATH:$MYNEWPATH"
? В любом случае нет, ты не можешь этого сделать