Как запустить сценарий оболочки без использования команд" sh "или" bash"?
у меня есть сценарий оболочки, который я хочу запустить без использования команд "sh" или "bash". Например:
вместо: sh script.sh
Я хочу использовать: script.sh
Как я могу это сделать?
(ii) я также читал о связывании скрипта с другим файлом в переменных пути. Я использую свой университетский сервер и я пока нет прав на создание файла в этих местах.
8 ответов:
добавить "shebang" в верхней части файла:
#!/bin/bashи сделать ваш файл исполняемым (
chmod +x script.sh).наконец, измените свой путь, чтобы добавить каталог, в котором находится ваш скрипт:
export PATH=$PATH:/appropriate/directory(как правило, вы хотите
$HOME/binдля хранения собственных скриптов)
вот некоторые из предварительных условий использования непосредственно имени скрипта:
- добавить
sha-bang {#!/bin/bash)линия в самом верху.- используя
chmod u+x scriptnameсделать скрипт исполняемым.- поместите скрипт под .
- запустить скрипт, используя только имя скрипта.
Примечание: причина, по которой я предложил поместить его под
/usr/local/binпапка, потому что, скорее всего, это будет путь уже добавлено в вашPATH variable.обновление:
если у вас нет доступа к
/usr/local/binпапка затем выполните следующие действия:
- создать папку в вашем домашнем каталоге и назовем его
myscripts.- Do
ls -lartв вашем домашнем каталоге, чтобы определить сценарий запуска, который использует ваша оболочка. Это должно быть либо.profileили.bashrc.- после того, как вы определили сценарий запуска, добавьте следующую строку в свой сценарий -
export set PATH=$PATH:~/myscript.- после добавления, источник запуска сценария или выйти из системы и войти обратно.
- выполните сценарий, используя имя сценария.
просто убедитесь, что это исполняемый файл, используя
chmod +x. По умолчанию текущий каталог не находится на вашем пути, поэтому вам нужно будет выполнить его как./script.sh- или иным образом ссылаться на него по квалифицированному пути. Кроме того, если вам действительно нужно простоscript.sh, вам нужно будет добавить его в свой путь. (У вас может не быть доступа для изменения системного пути, но вы почти наверняка можете изменить путь своей текущей среды.) Это также предполагает, что ваш скрипт начинается с чего-то вроде#!/bin/sh.вы также можете использовать псевдоним, который на самом деле не связан со сценариями оболочки, а только оболочкой, и прост как:
alias script.sh='sh script.sh'что позволит вам использовать просто
script.sh(буквально - это не будет работать для любой другой*.shfile) вместоsh script.sh.
в этом примере файл будет называться
myShellпрежде всего нам нужно будет сделать этот файл, который мы можем просто начать, набрав следующее:
sudo nano myShellобратите внимание, что мы не поставили
вы должны включить выполнение программы.
chmod +x script.shзатем вы можете использовать
./script.shвы можете добавить папку в путь в свой
.bashrcфайл (находится в вашем домашнем каталоге). Добавьте эту строку в конец файла:export PATH=$PATH:/your/folder/here
вы можете ввести sudo install (имя скрипта) /usr / local/bin/(что вы хотите ввести для выполнения указанного скрипта)
ex:
sudo install quickcommit.sh /usr/local/bin/quickcommitвведите парольтеперь может работать без .sh и в любом каталоге
добавить . (текущий каталог) к переменной пути.
Вы можете сделать это путем редактирования .файл профиля.
поместите следующую строку в ваш .файл профиляPATH=$PATH:.
Просто не забудьте добавить Shebang (#!/bin/bash) строка в начале вашего скрипта и сделать скрипт исполняемым (с помощьюchmod +x <File Name>).
вот мой сценарий резервного копирования, который даст вам идею и автоматизацию:
Сервер: 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 в любом месте на терминале, чтобы запустить скрипт! (предполагая, что /usr/bin находится в вашем пути)
Comments