Запустить сценарий bash, используя имя [duplicate]

Я новичок в написании сценариев bash и сделал один для своего VPN под названием myvpn.sh Вместо того, чтобы делать ./ myvpn.sh , я хочу просто написать myvpn в терминале, и он будет запускать его из любого каталога. Пытался найти его в Google, но безуспешно (вероятно, искал не то в Google).

Может ли это сделать любитель или для этого требуются дополнительные знания?

3
задан 8 January 2020 в 13:30

4 ответа

Можно сделать alias из пути к Вашему сценарию. Во-первых, сделайте свой исполняемый файл команды при помощи chmod:

chmod u+x myvpn.sh

где u+x дает только пользователю (Вы) разрешение выполнить сценарий.

Затем сделайте alias в Вашем .bashrc сделать это персистентным:

alias myvpn='/path/to/your/script'

Теперь можно просто ввести myvpn отовсюду выполнить сценарий.

3
ответ дан 12 January 2020 в 12:36

Чтобы смочь запустить скрипт просто путем введения его имени, сценарий должен находиться в папке, которая перечислена в пути поиска. Команда echo $PATH перечислит Ваши текущие пути поиска. Когда Вы вводите имя исполняемого файла, система ищет папки, перечисленные в переменной ПУТИ для нахождения исполняемого файла с именем, которое Вы ввели.

Если Вы захотите, чтобы Ваш сценарий был доступен всем пользователям, то необходимо будет поместить его в одну из папок под системными папками. Для этого Вам нужны права администратора.

Если Вы - единственный пользователь, который должен использовать сценарий, затем создать a bin папка под Вашей домашней папкой (т.е. папкой, которая также содержит Documents, Pictures и т.д.). Затем выйдите из системы и въезжайте задним ходом. Ubuntu настроена для автоматического включения локального bin папка в ПУТИ. После этого Вы сможете выполнить любой исполняемый файл, который Вы помещаете в свое локальное bin папка путем ввода имени файла.

Деталь: если Вы хотите ввести myvpn для запущения пользовательского скрипта затем также необходимо будет назвать его как этот: таким образом переименовать myvpn.sh кому: myvpn. Также не забывайте делать исполняемый файл сценария. После перемещения сценария в локальное bin папка, следующая команда сделает это исполняемым файлом:

chmod +x ~/bin/myscript

Можно также использовать файлы (наутилус) для создания исполняемого файла сценария: щелкните правой кнопкой по сценарию, выберите "Свойства" и перейдите к вкладке "Permissions".

1
ответ дан 12 January 2020 в 12:36

Привет и приветствие на Спрашивает Ubuntu.
Удачный Вы, Ваш вопрос не требует усовершенствованного знания вообще!

1) Найдите папки, где исполняемый файл расположен

Чтобы быть выполненным только с его именем, двоичный файл должен быть в одном из каталогов, существующих в переменной окружения PATH.

Каталог по умолчанию для пользовательских исполняемых файлов на Ubuntu $HOME/bin. Если это не существует, можно создать его вручную, и это будет автоматически добавлено в переменной ПУТИ. $HOME переменная среды, которая содержит путь к корневому каталогу Вашего пользователя, означая, что эта папка "мусорного ведра" должна быть создана в той же папке как "Документы", "Изображения", "Музыка"...*

Для знания, что Вы имеете в своей переменной ПУТИ самый простой путь состоит в том, чтобы открыть терминал и тип echo $PATH, как предложено ванадием. Можно также просмотреть все переменные среды с env.

Необходимо получить что-то как (плюс другие переменные, если бы Вы использовали env): PATH=/home/datam/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Папки разделяются ":" знак.

Каждый раз, когда Вы вводите команду в терминале, Ваша ОС изучает эти каталоги, пока она не находит соответствующий исполняемый файл!

Здесь Вы видите, что существует папка в Вашем корневом каталоге т.е. доступна без sudo: $HOME/.local/bin

Если Вы добавили папку мусорного ведра вручную, то Вы будете видеть его в своем пути (после того, чтобы выходить из системы и вхождения в снова).

Это - то, где Ваш файл должен быть!

2) Сделайте свой исполняемый файл файла

Поэтому удостоверьтесь, что Ваш файл является исполняемым файлом Вашим пользователем т.е. имеет x разрешение для "u" (графически щелчком правой кнопкой-> свойства-> полномочия в зависимости от Вашего распределения, в командной строке с ls -l от папки, где Ваш файл стоит). Отредактируйте свой сценарий для добавления #!/bin/bash на его первой строке, если не уже сделанный.

3) Переместите файл в правильную папку

Теперь, переместите или скопируйте файл в $HOME/bin

Сделанное задание :) можно теперь выполнить его от терминала, просто введя имя файла!

4) Переименуйте файл (дополнительно)

Если имя файла Вашего сценария будет "myvpn.sh", то Вы запишете "myvpn.sh" в терминале для вызова его. Таким образом, если Вы хотите назвать сценарий только с "myvpn", необходимо переименовать файл.

2
ответ дан 12 January 2020 в 12:36

Вы могли переместить свой сценарий в /usr/local/bin и сделайте это исполняемым файлом с chmod 0750 myvpn.sh. Это должно позволить Вам запускать свой скрипт, просто введя, это - имя. На всякий случай удостоверьтесь, что Ваш сценарий запускается с #!/bin/bash.

1
ответ дан 12 January 2020 в 12:36

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

Похожие вопросы: