タグ

shellscriptに関するhibiki_koyoのブックマーク (7)

  • ユーザーの環境変数を設定するbashの設定ファイルと、カスタムプロンプトについて

    bashの環境設定ファイルについて 普段パスを指定すること無くコマンドを利用できるのは、ログイン時にコマンドへのパスが記述された設定ファイルを読み込んでいるからです。 以下の順序で設定ファイルを読み込んでいます。 ログイン時 1.「/etc/profile」の読み込み このファイルはログイン時に読み込む全ユーザー共通の設定です。ここで基的なコマンドにパスを通しています。 2.「.bash_profile」の読み込み 続いてユーザーのhomeディレクトリにある「.bash_profile」を読み込みます。 それがない場合は「.bash_login」。 それもない場合は「.profile」。 という順序でユーザー個別の設定を読み込みます。 なぜか3つも用意されていますが、ディストリビューションによって優先順位や有効なファイルが違うため、使い分ける必要があります。CentOSの場合は「.bas

    ユーザーの環境変数を設定するbashの設定ファイルと、カスタムプロンプトについて
    hibiki_koyo
    hibiki_koyo 2015/03/18
    共通の環境変数は/etc/profileによって各ユーザーごとに設定される
  • bash 入門

    ユーザーの入力をカーネルに伝えまたその逆を行う、いわば両者の橋渡しを行うプログラムをシェルといいます。ユーザーから見てカーネルを包んでいる貝殻(shell)のように見えることからそう名付けられました。 シェルには多くの種類がありますが、Linuxにおけるデファクトスタンダードになっているbashについてどんな機能があるかを見ていきます。 補完 まず知っておきたい基的な機能が補完です。コマンドプロンプトでTabキーを押すことで、コマンド名やファイル名を補完することが出来ます。 $ ls abc1 abc2 def $ cat a[Tab] $ cat abc 確定できる部分までが補完されました。ここからさらに2回Tabキーを叩くと候補が表示されます。 $ cat abc[Tab][Tab] abc1 abc2 リダイレクト・パイプ リダイレクトとパイプという機能を理解するにはプロセスがどの

    hibiki_koyo
    hibiki_koyo 2015/03/18
    ブラケットはファイル名展開
  • .bash_profileと .bashrcの設定

    Terminalは、新たなwindowやtabが開かれる度に、/etc/profile, ~/.bash_profileを実行します。 それに対してxtermは/etc/profileや ~/.bash_profileを実行せずに、 単にxtermを開く親の環境を引き継いで、~/.bashrcを実行します。 例えばX11のアプリケーションからxtermを開くと、X11を立ち上げた時に/etc/profile, ~/.bash_profileを実行して 得られた環境変数を引き継ぎます。 Terminalから" xterm& "と打つと、立ち上がったxtermはその時のTerminalで設定されている環境変数を引き継ぎます。 いずれにせよ、開く度に実行されるユーザのファイルが、Terminalでは~/.bash_profile、xtermでは~/.bashrcと、二つで異なります。 そこで、ど

    hibiki_koyo
    hibiki_koyo 2014/09/25
    macなら.bash_profileにalias書けば消えへんねやろ?やろ?
  • 先程から騒ぎになっているbashの脆弱性について – 上田ブログ

    確認しました(苦笑) (追記: envを抜いてましたが、それだとCシェル系で確認できないので加えました) ueda@remote:~$ env x='() { :;}; echo vulnerable' bash -c 'echo this is a test' vulnerable this is a test 最初のワンライナーでなにがおこってるかというと、xの値であるはずの「() { :;}; echo vulnerable」の、echo vulnerableの部分がなぜか実行されています。 bashの文法ではシングルクォートで囲んだ中のものは何がどう書いてあっても単なる文字列であって、evalとかshとかに突っ込まない限り実行されるわけはないので、これは実装ミスかと。(と、書いたのですが環境変数に関数を仕込めるという仕様があるという話を初めて聞いて愕然と・・・。いま慌てて調べてます

  • 指定したプロセスIDのプロセスとその子孫全てを再帰的にkillするシェルスクリプト - 百日半狂乱

    二十五日半狂乱、2日目の記事. 実行中のプロセスをkillしたいが、対象のプロセスをkillすると子プロセスがゾンビ化しちゃうからプロセスツリーを丸ごとkillしたくなった. どうせならkillコマンドっぽくプロセスIDで指定して、指定したプロセスをrootとしてツリーの葉から根に向かってツリー上のプロセスをkillして回りたい. 車輪の再発明の匂いがプンプンするので、「そんなのこうすれば一発じゃん.」ってのがあったらご指摘いただけたらと思います.(※議論し尽くされていました) 追記:後日、↑のリンク先にある"より良いコード"について書いたので、こちらも参考をば. コードはgithub上に上げた. doi-t/killpstree READMEにも書いたけど、目的を達成するシェル関数*1は気持ちいいくらいにシンプル. killpstree(){ local children=`ps --p

    指定したプロセスIDのプロセスとその子孫全てを再帰的にkillするシェルスクリプト - 百日半狂乱
  • 【bash】リダイレクトとパイプを理解する(1) - 私は素人サーバ管理者

    次回:【bash】リダイレクトとパイプを理解する(2) 普段なにげなくリダイレクトやパイプを使っていますが、勉強を兼ねてまとめてみます。 ※長くなりそうなので適当に複数回に分けます。 標準入出力 標準入出力とはコマンドに与えられた、データストリーム入出力に関するインターフェースのことです。 標準入出力には以下の3つがあります。 名前デフォルトファイルディスクリプタ(FD) 標準入力キーボード0 標準出力画面1 標準エラー出力画面2 標準入力はコマンドへの入力ストリームで、キーボードからの入力です。 標準出力はコマンドからの出力ストリームで、エラー関係以外のメッセージを端末画面に出力します。 標準エラー出力は標準出力と同様にコマンドからの出力ストリームですが、 エラー関係のメッセージを端末画面に出力する点が異なります。 ファイルディスクリプタ(FD) FDはコマンドが外部リソースと通信するた

    【bash】リダイレクトとパイプを理解する(1) - 私は素人サーバ管理者
  • /bin/sh と /bin/bash の違い - 双六工場日誌

    みなさん、shebang書いてますか! Shebangというのは、スクリプトの最初の一行目に書く、「#!/bin/sh」とか「#!/usr/bin/perl」とかそういうあれです。詳しくはWikipediaさん(シバン (Unix))に聞いてくださいまし。 Twitter見てると、「そもそもこれにshebangなんて名前がついてるの知らなかったよ」という発言も見る不憫な子ではあるのですが、そこに何が書いてあるかで実は動作が違うよってのが今日の題です。それで、はまっていたのを最近見て、まああまりここで引っかかる人はいないと思いつつ、この点を書いた情報を見ないのでまとめてみました。*1 今日取り上げるのは、bashがデフォルト設定になっているLinuxでの「#!/bin/sh」と「#!/bin/bash」のお話。確認はCentOS5, 6で行なっています。 さて、上記の環境の場合、「/bin

    /bin/sh と /bin/bash の違い - 双六工場日誌
  • 1