Исходный файл сценария оболочки не сохранен

Я сохранил скрипт оболочки в bin(созданный мной). Когда я запускаю программу, чтобы избежать./ для запуска скрипта, мне нужно скопировать скрипт в один из каталогов, указанных в переменной PATH. Созданный каталог bin отсутствует в списке путей. Итак, чтобы добавить в список PATH:

export PATH=~/bin:"$PATH"

Но этот каталог не сохраняется в списке PATH. Когда я открываю новое окно терминала, мне нужно снова экспортировать его, чтобы запустить скрипт. Как я могу добавить его в список PATH навсегда? Также, если я пытаюсь переместить сценарий в каталог, указанный в списке PATH, он говорит, что РАЗРЕШЕНИЕ РАЗРЕШЕНО. Должен ли я переместить его, став пользователем root?

5 ответов

Можете добавить export PATH=~/bin:"$PATH" на ваш ~/.profile файл. Добавьте его внизу, сохраните и снова подключитесь к SSH.

Кроме того, если вы хотите, чтобы это изменение было общесистемным для любого пользователя, вы можете отредактировать путь в /etc/environment,

Этот работал для меня.

Откройте свой.bashrc gedit ~/.bashrc

Текстовый редактор открыт.

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Вставьте это и отредактируйте.bashrc. После закрытия текстового редактора, source ~/.bashrc

Если вы получаете Отказано в доступе, это означает, что скрипт не в исполняемом формате. chmod 755 program_nameЭто должно сделать работу. Откройте новый терминал, и он будет работать.

Добавить собственный путь к домашнему каталогу в $PATH

  1. Отредактируйте свой ~/.profile
  2. Добавьте эту строку после всех переменных, связанных с $PATH:

    export PATH="$PATH:$HOME/your-home-dir-path"

  3. Сохранить файл.

  4. Выйти / Перезапустить.

Добавление этого к вашему ~/.profile включить это изменение в терминале и текстовом режиме.

На всякий случай, если ваш собственный путь ~/bin или же ~/.local/bin!!!

Как уже говорилось в комментарии к вопросу, эти места уже включены в PATH в Ubuntu!

Вы можете просто:

  1. Создайте каталог (например, ~/bin).
  2. Скопируйте свой сценарий к нему.
  3. Измените его разрешения на выполнение с помощью команды:

    chmod +x ~/bin/script.sh

  4. Выйти / Войти. Кроме того, вы можете выполнить source ~/.profile

Как уже упоминалось, ваш ~/.profile должен уже содержать что-то вроде следующего:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Однако, похоже, что вы запускаете интерактивную оболочку bash без входа в систему (то есть вы не подключаетесь через ssh, а запускаете терминал из среды рабочего стола), которая не читает ~/.profile, а вместо этого ~/.bashrc читается как объяснено. здесь

Вы можете изменить ~/.bashrc, чтобы добавить путь, или прочитать ~/.profile для оболочек без входа в систему, как описано здесь, но, как упоминал Джейкоб, если вы выходите из системы / входите в систему, это не требуется.

Чтобы понять разницу между логином и без логина, посмотрите этот ответ.

Когда ты бежишь

export PATH=~/bin:"$PATH"

Вы устанавливаете переменную среды PATH и экспортируете ее в работающие родительские терминалы. Это все равно что сказать "новая переменная PATH это, распространяй слово". Это работает, но как только вы перезагрузите компьютер, PATH вернется к настроенному. Чтобы сделать изменение постоянным, вам нужно отредактировать файл.profile в вашей домашней папке. Это обычно имеет это:

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi

которая будет автоматически включать папку $HOME/bin, если она существует. Но если этого не произойдет, вы можете просто добавить либо приведенные выше команды, либо:

    export PATH="$PATH:$HOME/bin"

к файлу, и эта папка будет включена в PATH на каждом сеансе вашего пользователя.

Для записи в каталог /usr/bin вам необходимы права root, но это не обязательно, если вы измените файл.profile.

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