web-dev-qa-db-ja.com

コマンドラインからどこでも実行するスクリプトをインストールするにはどうすればよいですか?

基本的なPythonスクリプトがあり、それがハッシュバングで何が配置されていない場合、Linuxのターミナルから次のように実行できます。

/path/to/file/MyScript [args]

インタプリタやファイル拡張子を介して実行することなく、プログラムを実行します。

簡単に入力できるように、このスクリプトをインストールしますか

MyScript [args]

システムのどこかで実行されますか?これはシステムのすべてのユーザーに実装できますか、それともユーザーごとに再実行する必要がありますか?スクリプトを特定のディレクトリに置くだけですか、それとも他のものが必要ですか?

22
jeffbr13

このようなものを置くのに最適な場所は/usr/local/bin

これは、カスタムインストールされたバイナリを配置する通常の場所であり、PATHの初期に配置する必要があります。

そこにスクリプトをコピーするだけで(おそらくSudoを使用して)、どのユーザーでも機能するはずです。

25
agf

pythonスクリプトをどこでも使用できるようにする手順:

作成pythonスクリプト:

cd /home/el/bin
touch stuff.py
chmod +x stuff.py

あなたのpythonは:を見つける

which python
/usr/bin/python

このコードをそこに入れます:

#!/usr/bin/python
print "hi"

同じディレクトリで実行:

python stuff.py

ディレクトリを上に移動すると、使用できません:

cd ..
stuff.py

-bash: stuff.py: command not found

見つかりません!予想どおり、pythonファイルを$ PATHに追加)のファイルパスを追加します

vi ~/.bashrc

ファイルを追加します:

export PATH=$PATH:/home/el/bin

保存して、.bashrcを再適用し、再試行します

source ~/.bashrc

再試行:

cd /home/el
stuff.py

プリント:

hi

コツは、bash ShellがShebang経由でファイルの言語を知っていることです。

14
Eric Leschinski

~/binを作成し、export PATH=$PATH:$HOME/binをbashrc/profileに配置するだけです。システムを台無しにしないでください、それはwillかみつき、信頼してください。

いくつかのこと(質問に関連するが、回答の一部ではない):

  1. もう1つの方法export PATH=$HOME/bin:$PATHは安全ではありません。bashは~/binフォルダーで実行可能ファイルを探し、それらの名前が元の$PATHの他の実行可能ファイルと一致すると、予期しないことに驚かれるからです。 /非動作コマンドの実行。
  2. スクリプトをchmod+xに保存するときは、~/binを忘れないでください。
  3. ~/binフォルダーに何を入れているかに注意してください。何かをテストしたり、未完成のスクリプトで作業している場合は、常にCWDの./$SCRIPT_NAMEを使用してスクリプトを実行することをお勧めします。 ~/binの下に置きます。
8
Sudhi

簡単な答えは symlink システムに含まれる任意のディレクトリ$PATHへのスクリプトです。

長い答えをウォークスルーの例で以下に説明します(これは私が通常行うことです):

a)スクリプトを作成します。 $HOME/Desktop/myscript.py

#!/usr/bin/python
print("Hello Pythonista!")

b)スクリプトファイルの権限を変更して、実行可能にします。

$ chmod +x myscript.py

c)カスタマイズされたディレクトリを$PATHに追加し(下記のメモの理由を参照)、ユーザーのスクリプトに使用します。

$ export PATH="$PATH:$HOME/bin"

d)次のように、スクリプトへのシンボリックリンクを作成します。

$ ln -s $HOME/Desktop/myscript.py $HOME/bin/hello

hello(何でもかまいません)は、スクリプトの呼び出しに使用するコマンドの名前です。

注意:

i)$HOME/binの代わりに/usr/local/binを使用する理由は、ローカルスクリプトを他のユーザー(必要な場合)および他のインストール済みのものから分離するためです。

ii)シンボリックリンクを作成するには、完全な正しいパスを使用する必要があります。

$HOME/bin GOOD ~/bin NO GOOD!

以下は完全な例です。

 $ pwd
 ~/Desktop
 $ cat > myscript.py << EOF
 > #!/usr/bin/python
 > print("Hello Pythonista!")
 > EOF
 $ export PATH="$PATH:$HOME/bin"
 $ ln -s $HOME/Desktop/myscript.py $HOME/bin/hello
 $ chmod +x myscript.py
 $ hello
Hello Pythonista!
8
Aziz Alto

スクリプトをPATHのどこかに置くこと(/usr/local/binなど)は良い解決策ですが、これはforcesシステムのすべてのユーザーがスクリプトを使用/参照することを意味します。

/etc/profileにエイリアスを追加すると、システムのユーザーがunaliasコマンドを使用してこれを元に戻すことができるようになります。追加する行は次のようになります。

alias MyScript=/path/to/file/MyScript
4
jfg956

シェルにecho $PATHと入力します。これらは、commandと入力したときに検索されるディレクトリなので、それらのいずれかに配置します。

編集:どうやら/usr/binは使用せず、/usr/local/binを使用してください

3
dcpomero

/ usr/local/bin /にスクリプトへのシンボリックリンクを作成するだけです。

Sudo ln -s /path/to/your/script.py /usr/local/bin/script
3
Yura

[〜#〜] fhs [〜#〜] によると、/usr/local/bin/はカスタムスクリプトに適した場所です。コピーしてから755root:rootにするのが好きです。

0
Michał Šrajer