質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.10%

シェルスクリプトを使用して、一時的に aliasを登録したい。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 84

cacapon

score 7

閲覧頂きありがとうございます!

悩んでいること。

一時的に使うのを想定したaliasをシェルスクリプトで登録する方法を探しています。

なぜこれが欲しいの?

複数人が関わるプロジェクトで、プロジェクトファイル内で
特定のコマンドを打つ機会が多い場合を想定しています。

例えば…(ここでは例として ex-command というコマンドとします)

自分で使う際はalias ex-command='<よく使うコマンド>'を登録すれば事足りるのですが、
確認作業などを依頼するときに、「ex-command 打ってね」とは言えません。

かといって、そのプロジェクト特有の処理内容を、.bashrcに登録してもらうのもどうかと思いまして…

上の事情から、「確認作業の時だけでいいので、一時的にex-commandを登録するシェルスクリプト」があれば、
ex-commandを使う時に「このスクリプト実行してからex-command 打ってね」って伝えられるので、
依頼が簡単になるかなと思ったんです。

利用環境

Windows10 home
GNU bash, version 4.4.23(1)-release (x86_64-pc-msys)
MINGW64

実際にやってみたこと。

下記コードを作成して確認しました。

#!/bin/bash
alias ex-command='echo hello!'

自分が一時的に登録する時に打ち込む alias ex-command='echo hello!'
そのままシェルスクリプトに打ち込んだものになります。

私の環境がbashだったのでshebangは/bin/bashにしています。

出来上がったファイルをchmod +x してから実行したのですが、
ex-commandと打ち込んでもaliasが登録されておりませんでした。

調べたこと

  • aliasはコマンドで打つと一時的に登録できること
  • aliasを永続的に登録するには.bashrc(bashの場合)に記載すること
  • aliasをシェルスクリプトで実行するには、shopt -s expand_aliasesを設定する必要がある。
    ↑については「シェルスクリプト内で使いたい場合」なのでちょっと違う気がしております。

最後まで見ていただきありがとうございました。
必要な情報が不足されている場合は随時追記していきますのでよろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • takasima20

    2020/06/29 19:39

    回答は誰かにお任せするとして… それが必要ならばそうする方がいいんじゃないかなあ。ヘンに小手先の技にはしると、どこかで誤解が生じていらぬ手間がかかることありそうです。

    キャンセル

  • cacapon

    2020/06/29 19:51

    コメントありがとうございます!
    takasima20様がおっしゃる
    「それが必要」の「それ」と
    「小手先の技」が何を指しているかが私が理解できていないのですが…

    「それ」= 今回私が質問した、シェルスクリプトからaliasに一時的に登録する方法
    「小手先の技」 = 各個人が各々何らかの方法で解決した、依頼者が想定していない方法
    といった認識で書きますね。ズレていたらゴメンナサイ!

    私もtakasima20様のおっしゃる通りかと思います。

    コマンドが複雑だとミスが出てくるでしょうし、
    特に作業を依頼するときは、最大限簡略化した内容で伝えたいなと思いまして…
    それで今回の質問内容をする次第となりました。

    キャンセル

  • takasima20

    2020/06/29 19:56

    いや~ コピペで実行できるレベルだったらその方がいいんじゃない? くらいの気持ちでした。alias を使いこなすだけのリテラシーがその他の人にないんだったら、うまく動かなかった時のフォローとか逆に手間が増えるんじゃないかなあ、と。(汗

    キャンセル

  • cacapon

    2020/06/29 20:05

    なるほど! そうなると私のコメントは見当違いですね(笑)失礼いたしました。

    むむむ、確かに「このコマンド、コピペして使って」でも良さそうな気が…
    ただ、個人的には設定できる方法があるなら知りたいという気持ちもありますので、
    takasima20様の方法は最終手段として考えてみます。

    出来る出来ないにかかわらず、解答待ってみます!
    コメントありがとうございました!

    キャンセル

回答 1

checkベストアンサー

+1

ん~ すぐに回答がつくと思ったので静観してたのですが…

https://teratail.com/questions/2414

こんな感じで source コマンド使うです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/06/30 09:07 編集

    takasima20様、無事に解決できました!ありがとうございます!

    ちょっと迷ってしまったので、他の人が見た時に困らないよう、備忘録で残しておきます。
    作成したファイル(test.shとします)をsourceコマンドで実行することで、一時的に登録が出来ました!

    つまりこんな感じですね。(シェルスクリプトの中身は質問に記載のコードになります。)
    $ source test.sh

    因みに、chmod +x test.sh は必要ありませんでした。
    source でなのかはわかりませんでしたが、勝手に実行権限が付与されるみたい…

    まあ、sourceコマンドを理解している方は多分大丈夫だと思うのですが…
    私みたいに、test.shの中身を source alias ~~
    って変えてしまって、あれぇ?ってなる人もいるかもしれないので一応書いときます。

    キャンセル

  • 2020/06/30 19:42

    (・∀・)b

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる