itsource

"sh" 또는 "bash" 명령을 사용하지 않고 셸 스크립트를 실행하려면 어떻게 해야 합니까?

mycopycode 2023. 4. 22. 09:28
반응형

"sh" 또는 "bash" 명령을 사용하지 않고 셸 스크립트를 실행하려면 어떻게 해야 합니까?

"sh" 또는 "bash" 명령을 사용하지 않고 실행하는 셸 스크립트가 있습니다.예를 들어 다음과 같습니다.

sh script.sh

script.sh

이거 어떻게 해?

추신 (i) 셸 스크립트를 잘 사용하지 않고 에일리어스에 대해 읽어보려고 했지만 사용법을 이해하지 못했습니다.

(ii) PATH 변수에서 스크립트를 다른 파일과 링크하는 방법도 읽었습니다.대학 서버를 사용하고 있지만 해당 위치에 파일을 만들 수 있는 권한이 없습니다.

파일 맨 위에 "shebang"을 추가합니다.

#!/bin/bash

실행 가능한 로 만듭니다(파일 실행 가능).chmod +x script.sh를 참조해 주세요.

마지막으로 경로를 변경하여 스크립트가 있는 디렉토리를 추가합니다.

export PATH=$PATH:/appropriate/directory

한 경우)$HOME/bin★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」

스크립트명을 직접 사용하기 위한 전제 조건은 다음과 같습니다.

  1. 합니다(shebang ( shebang ( shebang ( shebang #!/bin/bash를 맨 위에 표시합니다.
  2. chmod u+x scriptname실행 가능하게 scriptname는 스크립트의 이름입니다).
  3. 를 " " " 아래에 배치합니다./usr/local/bin더입니니다다
    • 주의: 아래쪽에 둘 것을 권장합니다./usr/local/bin 그 는 이미 되어 있을 이 높기 때문입니다.PATH★★★★★★ 。
  4. 이름만 하세요.scriptname.

할 수 /usr/local/bin다음 작업을 수행합니다.

  1. 를 만들고, 을 「홈 디렉토리」라고 .bin.

  2. ls -lA홈 디렉토리에서 셸이 사용하고 있는 기동 스크립트를 식별합니다. 중 하나여야 ..profile ★★★★★★★★★★★★★★★★★」.bashrc.

  3. 기동 스크립트를 식별하면, 다음의 행을 추가합니다.

    PATH="$PATH:$HOME/bin"
    
  4. 추가된 후 시작 스크립트를 소스하거나 로그아웃했다가 다시 로그인합니다.

    「」, 「」를 붙입니다.. 이름 " " " " " " " " " )을 입력합니다.. .profile ★★★★★★★★★★★★★★★★★」. .bashrc

  5. 이름만 하세요.scriptname.

만 하면 .chmod +xPATH에 에 PATH로 ./script.sh- 또는 정규 경로로 참조합니다.정말로 한 것이 , 꼭 필요한 것이 있습니다.script.shPATH에 추가해야 합니다.(시스템 경로를 변경할 수 있는 접근권은 없지만 현재 환경의 PATH는 거의 확실하게 변경할 수 있습니다.)은 ,, 크, 크, 크, 크, 크, 크, this 등이 있다고 가정합니다.#!/bin/sh.

에일리어스를 사용할 수도 있습니다.이 에일리어스는 셸 스크립팅과 실제로 관련된 것이 아니라 셸에만 관련된 것으로, 다음과 같이 간단합니다.

alias script.sh='sh script.sh'

하면 쓸 수 있어요.script.sh- 이 은 다른 수 없습니다.*.shfile) file합니다.sh script.sh.

에서는, 이 파일은 「이러다」라고 .myShell

먼저 이 파일을 작성해야 합니다.처음에는 다음과 같이 입력합니다.

sudo nano myShell

.sh? 에서 실행 when when 、 미 、 터 、 터 、 터 、 문 、 문 다 。myShell리우의명명령행행행행행행 리해 행?

맨위이 ,, 노, 노, 노이어야 #!/bin/bash그러면 계속하기 전에 새 행을 남겨둘 수 있습니다.

을 위해 기본적인 하겠습니다.Hello World!

다음과 같이 입력합니다.

echo Hello World!

그 후 예시는 다음과 같습니다.

#!/bin/bash
echo Hello World!

이제 파일을 저장하고 다음 명령을 실행합니다.

chmod +x myShell

파일로 . now now now now now now now now now now now now로 이동할 수 있습니다./usr/bin/다음 명령을 사용합니다.

sudo cp myShell /usr/bin/

!!의!!!!!!!!!!!!에 '이렇게 하다'라고 할 수 .myShell라고 써있어야 합니다.Hello World!

프로그램의 실행 가능 비트를 활성화해야 합니다.

chmod +x script.sh

ㄴ, ㄴ, ㄴ, ㄴ, ㄴ데../script.sh

폴더는 PATH의 할 수 있습니다..bashrc파일(홈 디렉토리에 있음)을 클릭합니다.파일 끝에 다음 행을 추가합니다.

export PATH=$PATH:/your/folder/here

sudo install (스크립트 이름) /usr/local/bin/ (해당 스크립트를 실행하기 위해 입력할 내용)을 입력할 수 있습니다.

::sudo install quickcommit.sh /usr/local/bin/quickcommit패스워드를

.sh 없이 임의의 디렉토리에서 실행할 수 있게 되었습니다.

PATH. (PATH).
【프로파일】.profile. 【프로파일】
file.profile 에 합니다.
PATH=$PATH:.

Shebang을꼭 .#!/bin/bash실행 「 using the script 」 、 「 using 」 、 「 」 、 「 」 、 「 」 。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이 있는지 확인).

「」라고 입력합니다."#!/bin/sh"를 참조해 주세요. 후, 「 」로 합니다.script.sh베끼다$HOME/bin ★★★★★★★★★★★★★★★★★」$HOME/usr/bin
수 Distros로 끝나는 것은 "Linux Distros"입니다.'bin'.cd $HOME/bin ★★★★★★★★★★★★★★★★★」$HOME/usr/bin
「」라고 입력합니다.chmod 700 script.sh
'실행하다'라고 치기만 .run.sh 되면 해 봐.chmod +x run.shchmod 700 run.sh

모든 파일을 실행 파일로 만들기


migrate_linux_amd64라는 실행 파일이 있으며 이 파일을 "migrate"와 같은 명령어로 실행한다고 가정합니다.

  1. 먼저 파일 위치에서 실행 파일을 테스트합니다.
[oracle@localhost]$ ./migrate.linux-amd64 
Usage: migrate OPTIONS COMMAND [arg...]
       migrate [ -version | -help ]

Options:
  -source          Location of the migrations (driver://url)
  -path            Shorthand for -source=file://path 
  -database        Run migrations against this database (driver://url)
  -prefetch N      Number of migrations to load in advance before executing (default 10)
  -lock-timeout N  Allow N seconds to acquire database lock (default 15)
  -verbose         Print verbose logging
  -version         Print version
  -help            Print usage

Commands:
  goto V       Migrate to version V
  up [N]       Apply all or N up migrations
  down [N]     Apply all or N down migrations
  drop         Drop everyting inside database
  force V      Set version V but don't run migration (ignores dirty state)
  version      Print current migration version
  1. 권한이 확인하십시오.
    -rwxr-xr-x 1 oracle oinstall 7473971 May 18 2017 migrate.linux-amd64
    않으면 한다.chmod +x migrate.linux-amd64

  2. 다음 해 주세요./usr/local/bin root을 을 수행합니다.스도 스위치

sudo cp migrate.linux-amd64 /usr/local/bin
sudo chown oracle:oracle /user/local/bin/migrate.linux.amd64
  1. 그런 다음 다음과 같은 심볼 링크를 만듭니다.
sudo ln /usr/local/bin/migrate.linux.amd64 /usr/local/bin/migrate
sudo chown oracle:oracle /usr/local/bin/migrate
  1. 마지막으로 경로 또는 사용자 프로파일에 /usr/local/bin을 추가합니다.
export PATH = $PATH:/usr/local/bin
  1. 그런 다음 명령어를 "migrate"로 실행합니다.
[oracle@localhost]$ migrate
Usage: migrate OPTIONS COMMAND [arg...]
       migrate [ -version | -help ]

Options:
  -source          Location of the migrations (driver://url)
  -path            Shorthand for -source=file://path 
  -database        Run migrations against this database (driver://url)
  -prefetch N      Number of migrations to load in advance before executing (default 10)
  -lock-timeout N  Allow N seconds to acquire database lock (default 15)
  -verbose         Print verbose logging
  -version         Print version
  -help            Print usage

Commands:
  goto V       Migrate to version V
  up [N]       Apply all or N up migrations
  down [N]     Apply all or N down migrations
  drop         Drop everyting inside database
  force V      Set version V but don't run migration (ignores dirty state)
  version      Print current migration version
  1. 파일 속성을 사용하여 스크립트 파일을 실행 파일로 만듭니다.
  2. ~/ . rcrc 。 alias <alias namme> = <full script file path>'
  3. 이치노 source ~/.bashrc

모두가 제안한 것에 더해서.이러한 솔루션을 사용하더라도 사용자가 sudo로 스크립트를 실행하려는 경우 문제는 계속됩니다.

예: chmod a+x /tmp/myscript.sh sudo ln -s / tmp / myscript.sh / usr / local / bin / myscript

myscript를 입력하면 동작하지만 sudo myscript를 입력하면 명령을 찾을 수 없습니다.

sudo를 사용하려면 sudo sh myscript 또는 sudo bash myscript를 입력해야 합니다.

나는 이 문제를 해결할 방법이 떠오르지 않는다.

그냥:

/path/to/file/my_script.sh

언급URL : https://stackoverflow.com/questions/8779951/how-do-i-run-a-shell-script-without-using-sh-or-bash-commands

반응형