web-dev-qa-db-ja.com

カスタムスクリプトを作成するためのベストプラクティス

1つのWordだけを使用して端末で呼び出すスクリプトをいくつか作成しました(他の従来のシェルコマンド、cdlsなど)。

これまでのところ、スクリプトを環境パス(binディレクトリ)が指すディレクトリの1つに配置するか、スクリプトのディレクトリを環境パスに追加できることがわかりました。

どうやら、Ubuntuはbashrcファイルを変更しないことを推奨しています。さらに、bashrcファイルはbash_aliasesのみを呼び出しているように見えますが、これはエイリアス用です。さらに、/etc/environmentですべてのユーザーのパスを変更したり、/etc/profile.dでスクリプトを作成したりできることがわかりました。

だから私が知りたいのは、1人のユーザーのみとすべてのユーザーがアクセスできるカスタムコマンドを作成するためのベストプラクティスは何ですか? (binディレクトリを使用するか、PATHを変更しますか?後者の場合、どのファイルを変更しますか?)

3
F.Jean

そこで、すべてのユーザーがアクセスできるカスタムコマンドを作成するためのベストプラクティスを知りたいと思います。

/usr/local/binFilesystem Hierarchy Standard Ubuntu/Linuxを参照してください。

4.9/usr/local:ローカル階層

4.9.1目的

/ usr/local階層は、ソフトウェアをローカルにインストールするときにシステム管理者が使用するためのものです。システムソフトウェアの更新時に上書きされないようにする必要があります。ホストのグループ間で共有可能であるが/ usrにはないプログラムおよびデータに使用できます。

ローカルにインストールされたソフトウェアは、/ usr内のソフトウェアを置換またはアップグレードするためにインストールされている場合を除き、/ usrではなく/ usr/local内に配置する必要があります。

4.9.2要件

次のディレクトリ、またはディレクトリへのシンボリックリンクは、/ usr/localにある必要があります

"/usr/local"
bin
games
include
lib
man
sbin
share
src

だから私は、1人のユーザーのみがアクセスできるカスタムコマンドを作成するためのベストプラクティスを知りたい

mkdir $HOME/bin
gedit $HOME/.bashrc

下部に追加します:

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

必要に応じて、これを~/.profileおよび/etc/profileに設定することもできます(ただし、特定のPATHを作成するにはユーザー名を使用する必要があります)。

.profileの例:

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi
7
Rinzwind

(カスタムスクリプトだけでなく)カスタムコマンドに関する元の質問に答えています。

単純なコマンド-エイリアス

1人のユーザー(現在のユーザー)に対する単純なコマンドをエイリアスとして作成できます(質問でエイリアスを言及しました)。たとえば、

alias rm='rm -i'

removeコマンドをインタラクティブにする。これは「今」動作し、現在の端末ウィンドウでのみ機能します。標準エイリアスの近くの~/.bashrcに保存することができ、将来的にはすべてのターミナルウィンドウとテキスト画面でも有効になります。

現在のユーザーのエイリアスはSudoで機能しないことに注意してください(ユーザールートのエイリアスも作成し、/root/.bashrcに保存しない限り)。

たとえば、万一の場合に備えて、編集前に.bashrcファイルをbackupすることをお勧めします

cd
cp -p .bashrc .bashrc.0

このリンクも参照してください 2つのコマンドを1つのカスタムコマンドに結合しますか?

高度なコマンド-関数またはシェルスクリプト

複数のコマンドラインで構成され、複雑な方法でパラメーターを使用する、より高度なコマンドを呼び出したい場合は、

  • function、次の例のように定義されます

    • このような(bashのみ)

      function rmi {
       rm -i
      }
      
    • またはより一般的(シェルがshとして呼び出される場合も)

      rmi () {
       rm -i
      }
      

    このような関数はエイリアスのように有効化され、~/.bashrcに同じ方法で保存できます。

  • shellscript。これは、bashコマンドを含むテキストファイルです。

    • 現在のユーザーだけにシェルスクリプトを使用させたい場合は、~/binに保存できます。

      mkdir ~/bin  # create `~/bin`, if it is not already created.
      
    • それ以外の場合、すべてのユーザーにシェルスクリプトを使用させたい場合は、実行可能プログラムおよびスクリプトの一般的なディレクトリのいずれかに格納できます。たとえば、/usr/local/bin(またはスクリプトを実行する場合は/usr/local/sbinSudo)。

      既存の実行可能プログラムと「競合」(またはさらに悪いことに上書き)しないように、シェルスクリプトに一意の名前があることを非常に慎重に確認してください

3
sudodus