シェルスクリプトをグローバルにする方法は?


82

私はMacのOS10.6を使用しており、シェルスクリプトについて1つか2つ学ぼうとしています。シェルスクリプトを保存して実行可能にする方法は理解していますが、ファイルをグローバルに(つまり、どのフォルダーにいてもアクセス可能に)保存するために何ができるのか、どこに保存できるのか疑問に思っています。

たとえば、.shファイルを/ Users / username /ディレクトリに保存して実行可能にした場合、そのスクリプトはその特定のディレクトリでのみ実行できます。たとえば、/ Users / username / Downloadsに移動すると、スクリプトを実行できません。

また、シェルスクリプトについてさらに学ぶためのリソースの提案も役立ちます。ありがとう


1
PATH最初に環境変数について読んでから、質問を更新してください。
S.Lott 2010

回答:



44

従来、このようなスクリプトは~/bin(つまり、ホームディレクトリのbinディレクトリに)入るか/usr/local/bin/、前者はスクリプトが自分だけで機能することを意味し、後者はシステム上の誰でも実行できるようにするスクリプト用です。

に入れる場合は~/bin、PATH環境変数に追加する必要があるかもしれません。/usr/local/binすでにパス上にあるはずです。


30

それを行うには2つの方法があります-

  1. スクリプトをusr / local / binに置き、実行可能であることを確認します(chmod + x my_script)(これはすでにパスに設定されています。echo$ PATHを実行して確認できます)
  2. binという名前のフォルダをホームディレクトリに作成します。(個人のスクリプト用)
    • cd〜(ホームディレクトリに移動します)
    • mkdir bin(binフォルダーを作成します)
    • vim .bash_profile(パス環境変数を設定するため)
    • export PATH =〜/ bin:$ PATH(iを押してからこの行を追加し、escを実行して:wqと入力します)
    • これで、スクリプトの名前を入力して、好きな場所から実行できます。

**:ファイル名全体を入力するのではなく、短縮されたコマンドでスクリプトを実行する場合は、.bash_profileに次を追加します。
alias myscript='my_script.sh'
次に、myscript。を入力するだけでスクリプトを実行できます。(好きなエイリアスでサブできます)


4

Macオペレーティングシステムの場合

  • bash〜 / .bashrcファイルを開きます。
  • export PATH = "$ PATH:/Users/sher.mohammad/Office/practice/practiceShell"を使用して、bashrcファイルにスクリプトのパスを追加します
  • 〜。/ bash_profileファイルを開き、[[-s〜 / .bashrc]] && source〜 / .bashrcを追加します
  • 新しいターミナルウィンドウを開くターミナルを開くたびに、スクリプトが読み込まれます

直接入れてみません.bash_profileか?それはずっと簡単です(そしてそのソースの.bashrcのものは私にとっては決してうまくいきませんでした)。
szeitlin 2018

調査したところ、ログイン時にbash_profileが実行され、bashrcは非ログインシェルに使用され、OS Xはデフォルトでログインシェルやロードbash_profileのように使用されるため、bash_profileの追加は正常に機能し、bashrcに書き込む場合は[[- s〜 / .bashrc]] && source〜 / .bashrc in bash_profile、ログイン時にbash_profileが実行されたときにbashrcをロードする
Sher Mohammad

4

これは、bashrcファイルに精通している場合は非常に簡単です。これは完全に.bashrcファイルのみを使用し、完了するまでに2秒かかります。

(私はArch Linux Manjaroを使用しているので、ホームディレクトリにある.bashrcを使用します)

.bashrcファイルに配置するコード:

# Simple bashrc method to launch anything in terminal from any directory

YOURCOMMAND () {
  cd /path/to/directory/containing/your/script/ && ./YOURSCRIPT
}

ご覧のとおり、最初に単純な「cd」コマンドを使用してスクリプトの場所のディレクトリを指定し、次に「&&」を使用して次のコマンドをすぐに実行し、最後にスクリプトを同じように開きます。通常は!非常に簡単で、.bashファイルに直接保存できます!:)

私が誰かを助けたことを願っています!

よろしくお願いいたします。

AnonymousX


これは素晴らしいです...そしてそれは私のzshがオートコンプリートすることを可能にします!
ミラノ

2

bashシェルを使用する場合は、そのスクリプトを関数として記述し、それを.bashrcに配置するか、「sourcefile_name」によってその関数を含むファイルをソースします。

次に、シェルで関数呼び出しによってスクリプトを実行します。


1

保存するか/usr/bin(またはに存在する他のディレクトリPATH)、PATH保存したディレクトリを含めるように編集すると、基本的に任意のディレクトリで実行されます。


7
/usr/binOSのアップグレード中に完全に空にして置き換えることができるため、スクリプトが不思議なことに消えてしまいます。/usr/local/binブライアン・オークリーが述べたように、これはこの目的のためです。Filesystem Hierarchy Standard
Stephen P

0

'script.sh' "mv [script.sh] / usr / local / bin"の作業ディレクトリから(テストされていませんが、IMOの最も複雑でない方法のようです。)


1
sudo mv script.sh /usr/local/binそのディレクトリは特権を昇格しないと書き込み可能ではないため、おそらく必要になります。
ペレット

-2

マシンのグローバル実行可能ディレクトリに配置する必要があります。これは通常/usr/bin、Unixベースのオペレーティングシステムで行われると思います(ただし、ほとんどの場合、そのマシンでスーパーユーザー権限が必要になります)。

$PATH環境変数にある他のディレクトリに配置することもできますが、その変数にそのディレクトリがあるユーザーに対してのみ機能します。

シェルに$PATH入力するecho $PATHと、の値を見つけることができます。ディレクトリは :。で区切られます。


9
/ usr / binが間違った答えなので、私は反対票を投じるつもりです。/ usr / local / binは、「ローカル」スクリプト(つまり、システムに付属しているスクリプトではなく、作成したスクリプト)用に特別に設計されています。
ブライアンオークリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.