web-dev-qa-db-ja.com

bashスクリプトをプログラムで実行可能にする

ドライブを作成してマウントするには、bashスクリプトを作成する必要があります。したがって、2つの簡単なコマンド。コマンドラインで入力すると、両方とも「機能」します。

このスクリプトは、通常のユーザーがログインするたびに作成および実行されるため、その時点でこのスクリプトを実行可能にする方法が必要です。これまでのところ、これを機能させることはできません。たとえば、スクリプトが実行可能でないため、最初の部分mkdir /vvv/ggggは続行しません(推測しています)。

これが理にかなっていることを願っています。これは可能ですか?この作品の作り方に関するご意見をお待ちしています。

更新

ご回答ありがとうございます。 Linuxを初めて使用すること以外の情報を追加する必要があります。

Ulteoと呼ばれるオープンソースの仮想デスクトップアプリケーションを使用しています。このアプリはUbuntuの上で動作し、ほとんどサポートされていません-私がここにいる理由です。基本的に、私は火で学んでいます。

そのため、アプリケーションにはログインスクリプト管理機能があり、スクリプトをユーザーに関連付けることができます。 Net Useを使用した単純なWindowsスクリプトは、まったく問題なく機能します。ただし、Linux bashスクリプトを適用しようとしても何も起こりません。

スクリプトを実行可能にするために、最初にスクリプトに対してchmod +xを実行する必要があるため、これが失敗する理由だと考えています。ところで、Ulteoはchroot刑務所で実行されます。スクリプトを作成して保存しましたが、スクリプトが見つかりませんでした。 chroot刑務所の内側と外側の両方を検索しました。

私は、dan08によるアプローチが、最初のスクリプトが手動で検索して実行可能にする別のスクリプトを参照するようにしています。同じ問題が発生しますか?

この追加情報は状況を明確にしますか?前もって感謝します。

写真が添付されています。

![ログインscipt管理コンソール] [1]

![動作するWindowsスクリプト] [2]

![動作しないシンプルなLinuxスクリプト] [3]

申し訳ありませんが、まだ画像を投稿できません

11
HIlton Dynamics

必要なことが2つあります。

  1. スクリプトの先頭でスクリプトインタープリターを参照します。

    #!/bin/bash
    
  2. 許可を設定して実行可能にします。

    chmod +x myscript.sh
    
18
Ed Manet

スクリプトを実行可能にするのではなく、別のアプローチを取り、スクリプトの呼び出し方法を変更できます。

script.shは実行可能スクリプトを実行するのに十分です。

ただし

実行するプログラムを指定すると、実行不可能なスクリプトを実行することができます。

したがって、/bin/bash script.shまたはbash script.shまたはpython script.pyはすべて、非実行可能スクリプトを実行します。

したがって、スクリプトの呼び出し方法を編集し、実行に使用するバイナリを指定することをお勧めします。

2
Dan

SHC は、一般的なシェルスクリプトコンパイラです。コマンドラインで指定されたスクリプトを取り、Cソースコードを生成します。次に、生成されたソースコードがコンパイルおよびリンクされ、ストリップされたバイナリが生成されます。

コンパイルされたバイナリは、シェルコードの最初の行で指定されたシェル(Shebang:#!/bin/shなど)に依存するため、SHCは完全に独立したバイナリを作成しません。

SHC自体は、ccなどのコンパイラではありません。むしろ、シェルスクリプトをエンコードおよび暗号化し、有効期限機能が追加されたCソースコードを生成します。次に、システムコンパイラを使用して、元のスクリプトとまったく同じように動作するストリップバイナリをコンパイルします。実行時に、コンパイルされたバイナリは、シェルの-cオプションを使用してコードを復号化し、実行します。

0
Jhosman

C、C++またはPythonなどでプログラムを作成し、システムコマンドを使用してbashスクリプトを実行します。

たとえば、Cプログラムは次のようになります。

#include "stdio.h"
int main(int argc, char const *argv[])
{
    system('chmod +x path/yourbashscript.sh');
    system('path/yourbashscript.sh');
    return 0;
}

起動時にプログラムを実行するには、起動プログラムのリストに追加します。ダッシュボードからスタートアップアプリケーションを開き、[追加]ボタンをクリックして、コンパイルされた実行可能ファイルをリストに追加します。

0
akabhirav

コマンドラインで次を実行することにより、bashスクリプトを実行可能にできます。

cd ~/path/to/file
chmod +x nameoffile.sh

その後、起動時に実行するようにするには、@ akabhiravが言ったように、起動プログラムのリストにそれを追加します。

0
LanceLafontaine