Как запустить оболочку script без использования команд "sh" или "bash"?
У меня есть оболочка script, которую я хочу запустить без использования команд "sh" или "bash". Например:
Вместо sh script.sh
Я хочу использовать: script.sh
Как я могу это сделать?
P.S. (i) Я не использую shell script, и я пробовал читать об псевдонимах, но я не понимал, как их использовать.
(ii) Я также прочитал ссылку на script с другим файлом в переменных PATH. Я использую мой университетский сервер, и у меня нет прав на создание файла в этих местах.
Ответы
Ответ 1
Добавить "shebang" в верхней части вашего файла:
#!/bin/bash
И сделайте файл исполняемым (chmod +x script.sh
).
Наконец, измените свой путь, чтобы добавить каталог, в котором находится ваш script:
export PATH=$PATH:/appropriate/directory
(обычно вы хотите $HOME/bin
для хранения собственных скриптов)
Ответ 2
Вот некоторые из предпосылок прямого использования имени скрипта:
- Добавьте строку
she-bang (#!/bin/bash)
в самом верху. - Использование
chmod u+x scriptname
делает скрипт исполняемым. (где scriptname
- это имя вашего скрипта) - Поместите скрипт в папку
/usr/local/bin
. - Запустите скрипт, используя только имя скрипта.
Примечание. Причина, по которой я предложил поместить ее в папку /usr/local/bin
заключается в том, что, скорее всего, это будет путь, уже добавленный в PATH variable
.
Обновить:
Если у вас нет доступа к папке /usr/local/bin
сделайте следующее:
- Создайте папку в вашем домашнем каталоге и позвольте называть ее
myscripts
. - Выполните
ls -lart
в своем домашнем каталоге, чтобы определить сценарий запуска, используемый вашей оболочкой. Это должен быть .profile
или .bashrc
. - После того, как вы определили скрипт запуска, добавьте следующую строку в ваш скрипт:
export set PATH=$PATH:~/myscript
. - После добавления введите исходный скрипт или выйдите из системы и снова войдите в систему.
- Выполните ваш скрипт, используя имя
scriptname
.
Ответ 3
Просто убедитесь, что он выполним, используя chmod +x
. По умолчанию текущий каталог не находится на вашем PATH, поэтому вам нужно будет выполнить его как ./script.sh
- или иначе ссылаться на него по квалифицированному пути. Кроме того, если вам действительно нужно просто script.sh
, вам нужно будет добавить его в свой PATH. (Возможно, у вас нет доступа к изменению системного пути, но вы почти наверняка измените PATH вашей собственной текущей среды.) Это также предполагает, что ваш script начинается с чего-то вроде #!/bin/sh
.
Вы также можете использовать псевдоним, который на самом деле не связан с сценарием оболочки, а просто оболочкой, и прост как:
alias script.sh='sh script.sh'
Это позволит вам просто просто script.sh
(буквально - это не будет работать для любого другого файла *.sh
) вместо sh script.sh
.
Ответ 4
Вам нужно включить исполняемый бит для программы.
chmod +x script.sh
Затем вы можете использовать ./script.sh
Вы можете добавить папку в PATH в ваш .bashrc
файл (расположенный в вашем домашнем каталоге).
Добавьте эту строку в конец файла:
export PATH=$PATH:/your/folder/here
Ответ 5
В этом примере файл будет называться myShell
Прежде всего нам нужно сделать этот файл, который мы можем просто начать, набрав следующее:
sudo nano myShell
Заметьте, мы не добавили расширение .sh
? Это потому, что когда мы запускаем его из терминала, нам нужно только набрать myShell
для запуска нашей команды!
Теперь в nano верхняя строка ДОЛЖНА быть #!/bin/bash
тогда вы можете оставить новую строку перед продолжением.
Для демонстрации добавлю базовый Hello World!
ответ
Итак, я набираю следующее:
echo Hello World!
После этого мой пример должен выглядеть так:
#!/bin/bash
echo Hello World!
Теперь сохраните файл и затем выполните эту команду:
sudo chmod +x myShell
Теперь мы сделали исполняемый файл, и мы можем переместить его в /usr/bin/
с помощью следующей команды:
sudo cp myShell /usr/bin/
Просто чтобы убедиться, что машина может выполнить ее должным образом, нам нужно перезагрузить машину
Я использовал sudo shutdown -r now
Congrats! Наша команда сейчас выполнена! В терминале мы можем набрать myShell
и он должен сказать Hello World!
Ответ 6
Вы можете ввести sudo install (имя script)/usr/local/bin/(что вы хотите напечатать для выполнения указанного script)
ex: sudo install quickcommit.sh /usr/local/bin/quickcommit
введите пароль
теперь может работать без .sh и в любом каталоге
Ответ 7
Добавить. (текущий каталог) к переменной PATH.
Вы можете сделать это, отредактировав файл .profile.
поместите следующую строку в ваш файл .profile
PATH=$PATH:.
Просто не забудьте добавить строку Shebang (#!/bin/bash
) в начало вашего script и выполнить исполняемый файл script (используя chmod +x <File Name>
).
Ответ 8
Вот моя резервная копия script, которая даст вам идею и автоматизацию:
Сервер: Ubuntu 16.04
PHP: 7.0
Apache2, Mysql и т.д.
# Make Shell Backup Script - Bash Backup Script
nano /home/user/bash/backupscript.sh
#!/bin/bash
# Backup All Start
mkdir /home/user/backup/$(date +"%Y-%m-%d")
sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_rest.zip /etc -x "*apache2*" -x "*php*" -x "*mysql*"
sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_apache2.zip /etc/apache2
sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_php.zip /etc/php
sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_mysql.zip /etc/mysql
sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_rest.zip /var/www -x "*html*"
sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_html.zip /var/www/html
sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*"
# Backup All End
echo "Backup Completed Successfully!"
echo "Location: /home/user/backup/$(date +"%Y-%m-%d")"
chmod +x /home/user/bash/backupscript.sh
sudo ln -s /home/user/bash/backupscript.sh /usr/bin/backupscript
измените/home/user в свой каталог пользователя и введите: backupscript в любом месте терминала для запуска script! (предполагая, что /usr/bin находится на вашем пути)
Ответ 9
Введите "#!/bin/sh"
перед сценарием. Затем сохраните его, например, как script.sh
. скопируйте его в $HOME/bin
или $HOME/usr/bin
Каталог может отличаться в разных дистрибутивах Linux, но они заканчиваются на 'bin'
и находятся в домашнем каталоге cd $HOME/bin
или $HOME/usr/bin
Наберите chmod 700 script.sh
И вы можете запустить его, просто набрав run.sh
на терминале. Если это не работает, попробуйте chmod +x run.sh
вместо chmod 700 run.sh
Ответ 10
Просто:
/path/to/file/my_script.sh