1つのWordだけを使用して端末で呼び出すスクリプトをいくつか作成しました(他の従来のシェルコマンド、cd
、ls
など)。
これまでのところ、スクリプトを環境パス(bin
ディレクトリ)が指すディレクトリの1つに配置するか、スクリプトのディレクトリを環境パスに追加できることがわかりました。
どうやら、Ubuntuはbashrc
ファイルを変更しないことを推奨しています。さらに、bashrc
ファイルはbash_aliases
のみを呼び出しているように見えますが、これはエイリアス用です。さらに、/etc/environment
ですべてのユーザーのパスを変更したり、/etc/profile.d
でスクリプトを作成したりできることがわかりました。
だから私が知りたいのは、1人のユーザーのみとすべてのユーザーがアクセスできるカスタムコマンドを作成するためのベストプラクティスは何ですか? (bin
ディレクトリを使用するか、PATHを変更しますか?後者の場合、どのファイルを変更しますか?)
そこで、すべてのユーザーがアクセスできるカスタムコマンドを作成するためのベストプラクティスを知りたいと思います。
/usr/local/bin
。 Filesystem 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
(カスタムスクリプトだけでなく)カスタムコマンドに関する元の質問に答えています。
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/sbin
Sudo
)。
既存の実行可能プログラムと「競合」(またはさらに悪いことに上書き)しないように、シェルスクリプトに一意の名前があることを非常に慎重に確認してください。