ファイル(.shスクリプトなど)を実行可能にして、端末から実行できるようにする方法


245

script.shファイルがあり、このファイルの種類はshellscriptファイルです。このファイルをapplication / x-executableファイルとして作成します。どうすればできますか?




application / x-executableにすることについて具体的に尋ねたため、これは複製ではありません。もう1つの質問は、ターミナルでshファイルを開くことだけです。
Ziyaddin Sadigov

回答:


326

ファイルを実行可能としてマークできます。

chmod +x filename.sh

その後、次のように実行できます。

./filename.sh

別のコマンドを使用して起動する場合は、エイリアスを追加できます。

gedit ~/.bashrc

これをファイルの最後に追加します。

alias <new name>='/home/<full path to script>/filename.sh'

新しいターミナルセッションを開くかsource ~/.bashrc、ターミナルに入力して適用します。次に、新しい名前を使用してスクリプトを開始します。


。鉱山では、それはそれでsudoをせずに動作しますが、ない「エイリアスのCommand1 = 『/home/user_name/dir/script.sh』:あなたは、のようなコマンドを入力した後、sudoコマンドを使用する方法を知っています。
アーディティヤ

.bashrc run:exec bashを編集した後、bashを再起動してbashを再起動する必要があります。
サンパスペレラ

2
なぜ、実行可能ファイルがあることない./filename.shだけではないとfilename.sh
user1993

@ user1993はい、私もちょうどによってそれを実行可能にする方法を探していますfilenameし、ない./filename
MycrofD

@ user1993通常、using ./filename.shは現在のディレクトリ内のファイルを指定し、using filename.shは現在のディレクトリまたはPATHの任意のディレクトリ内のファイルを指定します。最初の使用法により、どのファイルにアクセスするかに関する不確実性がなくなります。この場合、#!/bin/bashファイル名を入力するだけで、bashまたは別のインタプリタを使用してスクリプトを実行しようとします(スクリプトの最初の行と見なされるため)。この使用法では、ディレクトリを指定する必要があります。または、bash filename.sh指定されていないディレクトリで動作するように見えるものを試すことができます。
a505999

37

ファイルを実行可能にする2つの方法があります。

GUIメソッド:

[アクセス許可]タブに移動し、[実行:[]プログラムとしてファイルの実行を許可する]ボックスをオンにします。

ここに画像の説明を入力してください

ターミナル/コマンド方式:

次のいずれかを使用できます。

cd /to/my/required/directory

次に実行する

chmod +x filename.extension

または単に実行します:

chmod +x /path/to/your/filename.extension

chmod また、いくつかのより高度なオプションもあります。

スペースは、分割されていることを示すためのものです。 - rwx --- ---

最初のセット---はユーザーです。2番目はグループで、最後はその他(他の誰でも)です

rは読み取り、wは書き込み、xはeXecuteを表します。

だから、誰もがそれを読むことができるが、実行するグ​​ループとそれを読み書きするユーザーのみ(しかし、何らかの理由で実行しない)は次のようになります:

-rw- rx- r-- ただし、これは次のようにコマンドに追加されます。

chmod +rw-rx-r-- /path/to/file.extension

chmod数字でこれを行うこともできます。バイナリに基づいています(1、2、4であるため)

したがって、これらの数値があります。

ユーザーによる実行は100です。グループごとに実行は010です。他による実行は001です

ユーザーによる書き込みは200です。グループごとの書き込みは020です。他による書き込みは002

ユーザーによる読み取りは400です。グループによる読み取りは040です。他による読み取りは004です。

次に、これらを一緒に追加して、目的の組み合わせを取得します。

だから、誰もがそれを読むことを許可するが、実行するグ​​ループとそれを書き込むユーザーのみ(ただし、何らかの理由で実行しない)は次のようになります。

400 + 040 + 004010200

つまり、600 + 050 + 004 = 654になります。

その後、コマンドを実行できます。

chmod +654 /path/to/file.extension それを設定します。

また、すべてのアクセス許可を設定するには、次のように入力できます。

chmod +rwxrwxrwx /path/to/file.extension

または(これは書くのが少し簡単ですが、それぞれを覚えるのは難しいです):

chmod +777 /path/to/file.extension

最後に、次のことができます。

chmod -777 /path/to/file.extension

すべての権限を全員から奪うため。

そして:

chmod +300 /path/to/file.extension

他のアクセス許可(実行アクセス許可など)に影響を与えずに、ユーザーの読み取りと書き込みを追加する。

このWebサイトには非常に便利な小さなグリッドチェックボックスがあり、必要なオプションにチェックを入れるとコマンドが表示されます。

ここに画像の説明を入力してください

ただし、使用可能なすべての組み合わせが賢明なわけではありません。使用される主なものは次のとおりです。

755- OwnerすべてがありGroupOther読み取りと実行が可能

700- Ownerすべてあり

644 - Owner読み取りと書き込み、およびできるGroupOther読むことができます

600- Owner読み取りと書き込みが可能

また、重要なユーザーグループを使用している場合:

775 - Owner読み取りと書き込み、およびできるGroupOther読むことができます

770- すべてOwnerGroup持ち、Other読み取りと実行が可能

750- Ownerすべてを備え、Group読み取りと実行が可能

664 - OwnerGroup読み取りと書き込み、およびできるOtherだけで読むことができます

660 - OwnerGroup読み書きできます

640- Owner読み取りおよび書き込みGroupが可能で、読み取りが可能

/ tmpを除き、777と666はほとんど使用されません。

よく使われているものを指摘してくれたIlmari Karonenに感謝します!


バイナリ(2ベース)ではなく、8進数(8ベース)に基づいていますか?バイナリでは0と1しか使用できませんが、8進数では0、1、... 6、7
Justinas

7 = 4 + 2 + 1-111の@Justinasバイナリは、読み取りと書き込み、実行を表します。
ティム

8

実行:

chmod +x /path/to/file.sh

実行不能にするには、次を実行します。

chmod -x /path/to/file.sh

たとえば、.shファイルを作成しました:

vi tester12.sh

viエディターでコードを作成した後、viエディターを終了します。

:wq!
chmod +x tester12.sh
./tester12.sh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.