生物情報リヌクス学習4

5761 ワード

ファイルの実行可能属性と環境変数
Linuxの下のファイルには、実行可能なスクリプトまたは実行可能なバイナリファイルであることを示す特殊な属性があります.前述したコマンドには、実行可能なプロパティがあります.which:表示コマンドのパスを示します.一般的に、使用するコマンドがどこから来たのかを知りたいときに使用されます.例えば、複数のRまたは複数のpythonがインストールされていますが、どれが使用されているのか分からないときは、whichをクリックして、すぐに明らかにします.ここではwhichで実行可能なコマンドが存在するパスを取得し、そのプロパティを表示します.
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l"`which cd`"
#rwx:       、  、   
#r-x:              、   ,    
#r-x:     、   ,    
-rwxr-xr-x 1 root root 26 12 7 2016 /usr/bin/cd
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l"`which mkdir`"
-rwxr-xr-x. 1 root root 79768 11 6 2016 /usr/bin/mkdir
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l"`which python`"
#l:     
#             ,               
lrwxrwxrwx. 1 root root 7 3 22 15:04 /usr/bin/python-> python2
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l"`which python2`"
#     
lrwxrwxrwx. 1 root root 9 3 22 15:04 /usr/bin/python2-> python2.7
#       
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l"`which python2.7`"
-rwxr-xr-x. 1 root root 7136 11 6 2016 /usr/bin/python2.7

ファイル属性rwxのうちrread(数字は4)、wwrite(数字は2)、xは実行(数字は1)を示す.次のコマンド・ラインに示すように、3回連続して3回連続して表示される3つのグループは、ファイルの所有者が所有する権限を表し、2番目のグループはファイルの所有者が存在するユーザー・グループが所有する権限であり、グループ内のすべてのメンバーが所有する権限であり、3番目のグループは他のユーザーの権限である.chmod a+x file:ファイルに全員を追加することを示す(a)実行可能権限(+x)chmod u+x file:ファイルに所有者を追加することを示す(u,user,)実行可能権限(+x)chmod g+x,chmod o+X:ファイルにグループ内の人または他の人に実行可能権限を追加することを示すchmod 755 file:所有者に読み書き可能な実行権限があり、他の人に読み取り可能な実行権限があることを示す.(7=4+2+1;5=4+1)具体的には、man chmodを使用して他のパラメータの使用を確認します.
#     
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ cat echo " I am a script created byehbio."
> END
#      
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l run.sh
-rw-rw-r-- 1 ct ct 39 6 14 23:12 run.sh
#     
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ chmod 755run.sh
#      
#    3 x
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l run.sh
-rwxr-xr-x 1 ct ct 39 6 14 23:12 run.sh
#            
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ chmod o-xrun.sh
#      x
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l run.sh
-rwxr-xr-- 1 ct ct 39 6 14 23:12 run.sh
#          
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ chmod g-xrun.sh
#       x
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l run.sh
-rwxr--r-- 1 ct ct 39 6 14 23:12 run.sh
#           
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ chmod a-xrun.sh
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l run.sh
-rw-r--r-- 1 ct ct 39 6 14 23:12 run.sh
#           
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ chmod a+xrun.sh
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ ls -l run.sh
-rwxr-xr-x 1 ct ct 39 6 14 23:12 run.sh

ファイルに実行可能な権限があれば、実行できるかどうかを検出します.
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ run.sh
-bash: run.sh:     

実はそうではありません.命令を入力して、車に戻った後、命令が見つからなかったことを示します.これはなぜですか.これは環境変数の概念に関して、通俗的に言えば、環境変数はコンピュータ(実際にはオペレーティングシステム)にいくつかのディレクトリを教えることです.これらのディレクトリには、前に表示された/usr/binディレクトリのような実行可能なファイルが格納され、ほとんどのシステムコマンドがこのディレクトリの下にあります.コマンドmkdirを入力すると、環境変数が表すいくつかのディレクトリが以前から厚く検索され、どのファイルにmkdirファイルがあるかを検索し、mkdirコマンドを実行します.システム内の環境変数の名前はPATHで、その内容は以下のコマンドで表示できます(オペレーティングシステムによって構成が異なり、少し違いますが、フォーマットは統一されており、:で分割されたパスの山).
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

だから、自分のコマンドをシステムに見つけたい場合は、コマンドが存在するディレクトリを環境変数に追加する必要があります.どのように操作しますか?環境変数に追加されるパスは、/の先頭または~の先頭のパスを指すフルパスでなければなりません.
#               ,     /    ~     
#     PATH  $,   PATH $  
#           $,      $
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ exportPATH=$PATH:/home/ct
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ct

このとき、私たちはそのコマンドを実行してみて、正常に実行しました.
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ run.sh
I am a script created by ehbio.

そのため、後で新しいソフトウェアをインストールしたり、新しいスクリプトを書いたりした後、ソフトウェアの実行可能プログラムと実行可能なスクリプトがあるディレクトリを環境変数に追加すればいいのです.ただし、コマンドラインではexportを実行し、環境変数に対する修正は、現在の端末に対してのみ有効であり、終了後は無効となる.この操作を長期的に有効にするためには、この文を1つのファイルに書き込む必要があります.1つのログインサーバが自動的に読み込まれるファイルに書き込む必要があります.一般ユーザの場合、リモートログイン端末の場合、ホームディレクトリの下にある~/.bash_profile(~/.bashrcではなく、ローカルログイン時にのみ読み込まれる)が自動的に読み込まれるので、export文をこのファイルに追加する必要があります.
#    ~/.bash_profile    ,       。           。
if [ -f ~/.bashrc ]; then
.~/.bashrc
fi
if [ -f ~/.bash_aliases ]; then
.~/.bash_aliases
fi
exportPATH=$PATH:/home/ct:/home/bin:/home/soft/bowtie2/bin

前述したように、システム検索コマンドの順序は、環境変数の最初のディレクトリから最後のディレクトリまでであり、クエリのコマンドに初めて遭遇した後、実行を呼び出す.システムにpythonコマンドが存在する場合、私たちは自分でpython(/home/ct/anaconda/binディレクトリの下にある場合)をインストールし、自分のpythonプログラムを実行したい場合は、/home/ct/anaconda/bin$PATHの前に書く必要があります.以下のようにします.
#  $PATH   
ct@iZ8vb3e9jtel4m99ss6e7eZ:~$ exportPATH=/home/ct/anaconda/bin:$PATH

これにより、環境変数がなければ/home/ct/anaconda/bin/pythonを実行してpythonコマンドを実行する必要があるため、環境変数を使用してコマンドの入力プロセスを簡略化することができます.環境変数というのは、自分で多く操作することで、徐々に理解が上達していきます.
環境変数の補完PATHは、ユーザがコマンドを入力したときにクエリーできるように、実行可能ファイルが存在するディレクトリを格納するための多くの環境変数の1つにすぎない.特に、自分で書いたスクリプトやインストールされたプログラムでは、どのパスの下にあるか分からないので、環境変数の設定という新しいパスをシステムに提供する必要があります.また、よく使われる環境変数はLD_LIBARY_PATHです.ダイナミックリンクライブラリ(soファイル)の場所を指定します.一般的には、ソフトウェアのインストールエラー時に使用されます.PYTHONPATH:Pythonのインストールパッケージのパスを指定します.PERL5LIB:perlのインストールパッケージのパスを指定します.環境変数を設定するには、2点:1に注意してください.新しい環境変数を設定するときは、元の環境変数を含めるのが一般的で、上書きできません.2.自分のディレクトリとシステム環境変数のディレクトリの順序に注意し、どちらを先に見つけたいのか、どちらを先に置く.
http://mp.weixin.qq.com/s/Rw6ivF_qBPCWiiGL7lxc_g