Расширение пути в Linux с помощью сценария bash

Я пытаюсь создать сценарий 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: ПУТЬ: команда не найдена»

Открыт для всех предложений, заранее спасибо.

Строка 6? Это export PATH? Вы уверены, что у вас там нет линии PATH = "$PATH:$MYNEWPATH"? В любом случае нет, ты не можешь этого сделать

that other guy 10.09.2018 23:45

Кажется, нужно приложить много усилий: PATH+ = "/new/path/1:/new/path/2"

glenn jackman 11.09.2018 01:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
408
1

Ответы 1

Вам нужно будет добавить новую переменную к старому пути (строка 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

glenn jackman 11.09.2018 01:17

Другие вопросы по теме