expect script to get its directory ?











up vote
0
down vote

favorite












a bash script can be BASEDIR=$(dirname $0) but how do I do that in expect script ?



If I use BASEDIR=[dirname $argv0] I get the error "invalid command name "dirname".










share|improve this question







New contributor




Qiulang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
























    up vote
    0
    down vote

    favorite












    a bash script can be BASEDIR=$(dirname $0) but how do I do that in expect script ?



    If I use BASEDIR=[dirname $argv0] I get the error "invalid command name "dirname".










    share|improve this question







    New contributor




    Qiulang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      a bash script can be BASEDIR=$(dirname $0) but how do I do that in expect script ?



      If I use BASEDIR=[dirname $argv0] I get the error "invalid command name "dirname".










      share|improve this question







      New contributor




      Qiulang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      a bash script can be BASEDIR=$(dirname $0) but how do I do that in expect script ?



      If I use BASEDIR=[dirname $argv0] I get the error "invalid command name "dirname".







      expect






      share|improve this question







      New contributor




      Qiulang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      Qiulang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      Qiulang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked Nov 18 at 7:05









      Qiulang

      1011




      1011




      New contributor




      Qiulang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Qiulang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Qiulang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          Various file operations in TCL are organized under the file(n) procedure which has a dirname command.



          % expect
          expect1.1> file dirname $argv0
          .


          Note however this may not be set, valid, nor checked for validity depending on exactly how the TCL (nor the shell code, for that matter) is run, so you may want error checking; the directory will also vary depending on how the code is run.



          % cat dirname
          #!/usr/bin/env expect
          set basedir [file dirname $argv0]
          puts $basedir
          % chmod +x dirname
          % ./dirname
          .
          % ~/tmp/dirname
          /Users/jhqdoe/tmp
          %


          Use file normalize if you always want a fully qualified path.



          % expect
          expect1.1> set basedir [file normalize [file dirname $argv0]]
          /Users/jhqdoe/tmp


          There is alo the Tcl_FindExecutable(3) call, which exposes the executable name (if available) via the info nameofexecutable command:



          % expect
          expect1.1> info nameofexecutable
          /opt/local/bin/expect





          share|improve this answer





















            Your Answer








            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "106"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });






            Qiulang is a new contributor. Be nice, and check out our Code of Conduct.










             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f482483%2fexpect-script-to-get-its-directory%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote













            Various file operations in TCL are organized under the file(n) procedure which has a dirname command.



            % expect
            expect1.1> file dirname $argv0
            .


            Note however this may not be set, valid, nor checked for validity depending on exactly how the TCL (nor the shell code, for that matter) is run, so you may want error checking; the directory will also vary depending on how the code is run.



            % cat dirname
            #!/usr/bin/env expect
            set basedir [file dirname $argv0]
            puts $basedir
            % chmod +x dirname
            % ./dirname
            .
            % ~/tmp/dirname
            /Users/jhqdoe/tmp
            %


            Use file normalize if you always want a fully qualified path.



            % expect
            expect1.1> set basedir [file normalize [file dirname $argv0]]
            /Users/jhqdoe/tmp


            There is alo the Tcl_FindExecutable(3) call, which exposes the executable name (if available) via the info nameofexecutable command:



            % expect
            expect1.1> info nameofexecutable
            /opt/local/bin/expect





            share|improve this answer

























              up vote
              0
              down vote













              Various file operations in TCL are organized under the file(n) procedure which has a dirname command.



              % expect
              expect1.1> file dirname $argv0
              .


              Note however this may not be set, valid, nor checked for validity depending on exactly how the TCL (nor the shell code, for that matter) is run, so you may want error checking; the directory will also vary depending on how the code is run.



              % cat dirname
              #!/usr/bin/env expect
              set basedir [file dirname $argv0]
              puts $basedir
              % chmod +x dirname
              % ./dirname
              .
              % ~/tmp/dirname
              /Users/jhqdoe/tmp
              %


              Use file normalize if you always want a fully qualified path.



              % expect
              expect1.1> set basedir [file normalize [file dirname $argv0]]
              /Users/jhqdoe/tmp


              There is alo the Tcl_FindExecutable(3) call, which exposes the executable name (if available) via the info nameofexecutable command:



              % expect
              expect1.1> info nameofexecutable
              /opt/local/bin/expect





              share|improve this answer























                up vote
                0
                down vote










                up vote
                0
                down vote









                Various file operations in TCL are organized under the file(n) procedure which has a dirname command.



                % expect
                expect1.1> file dirname $argv0
                .


                Note however this may not be set, valid, nor checked for validity depending on exactly how the TCL (nor the shell code, for that matter) is run, so you may want error checking; the directory will also vary depending on how the code is run.



                % cat dirname
                #!/usr/bin/env expect
                set basedir [file dirname $argv0]
                puts $basedir
                % chmod +x dirname
                % ./dirname
                .
                % ~/tmp/dirname
                /Users/jhqdoe/tmp
                %


                Use file normalize if you always want a fully qualified path.



                % expect
                expect1.1> set basedir [file normalize [file dirname $argv0]]
                /Users/jhqdoe/tmp


                There is alo the Tcl_FindExecutable(3) call, which exposes the executable name (if available) via the info nameofexecutable command:



                % expect
                expect1.1> info nameofexecutable
                /opt/local/bin/expect





                share|improve this answer












                Various file operations in TCL are organized under the file(n) procedure which has a dirname command.



                % expect
                expect1.1> file dirname $argv0
                .


                Note however this may not be set, valid, nor checked for validity depending on exactly how the TCL (nor the shell code, for that matter) is run, so you may want error checking; the directory will also vary depending on how the code is run.



                % cat dirname
                #!/usr/bin/env expect
                set basedir [file dirname $argv0]
                puts $basedir
                % chmod +x dirname
                % ./dirname
                .
                % ~/tmp/dirname
                /Users/jhqdoe/tmp
                %


                Use file normalize if you always want a fully qualified path.



                % expect
                expect1.1> set basedir [file normalize [file dirname $argv0]]
                /Users/jhqdoe/tmp


                There is alo the Tcl_FindExecutable(3) call, which exposes the executable name (if available) via the info nameofexecutable command:



                % expect
                expect1.1> info nameofexecutable
                /opt/local/bin/expect






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 18 at 16:05









                thrig

                23.6k12955




                23.6k12955






















                    Qiulang is a new contributor. Be nice, and check out our Code of Conduct.










                     

                    draft saved


                    draft discarded


















                    Qiulang is a new contributor. Be nice, and check out our Code of Conduct.













                    Qiulang is a new contributor. Be nice, and check out our Code of Conduct.












                    Qiulang is a new contributor. Be nice, and check out our Code of Conduct.















                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f482483%2fexpect-script-to-get-its-directory%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Morgemoulin

                    Scott Moir

                    Souastre