Small question in OSProcess

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Small question in OSProcess

Adrien BARREAU
Hi all,

I just have a little question:
    Is there a way to change the working directory of my terminal with something in OSProcess?

I mean:
- I know I can change the working directory of the current process with "OSProcess thisOSProcess chDir: '/'" but of course it does nothing on the terminal
- "OSProcess thisOSProcess command: 'cd /'" does absolutly nothing

I hope it's clean enough.

Regards,
Adrien.
Reply | Threaded
Open this post in threaded view
|

Re: Small question in OSProcess

David T. Lewis
On Tue, May 10, 2011 at 04:02:02PM +0200, Adrien BARREAU wrote:

>
> Hi all,
>
> I just have a little question:
>     Is there a way to change the working directory of my terminal with something in OSProcess?
>
> I mean:
> - I know I can change the working directory of the current process with "OSProcess thisOSProcess chDir: '/'" but of course it does nothing on the terminal
> - "OSProcess thisOSProcess command: 'cd /'" does absolutly nothing
>
> I hope it's clean enough.
>
> Regards,
> Adrien.
>

The Unix or Windows concept of "current working directory" does not
really have any meaning in Squeak/Pharo itself. In Unix, which maintains
a single tree structured view of the file system(s), you may think of
it as associated with the shell that you are running. In Windows it
is similar but needs to accommodate the idea of separate volumes
(C:, D:, etc).

The CommandShell package is a companion to OSProcess that implements
a simulation of Unix and Windows shell behaviour. Try loading CommandShell
in addition to OSProcess and I think that you will find what you are
looking for.

If your question refers to a Unix (Linux, OS X, etc) platform, and you
are trying to do is change the current working directory for the terminal
from which you started your Pharo image, then it's a different issue.
This is basic Unix behavior - the program you are running (the VM) is
a child process of the program that started it (the shell in your
terminal window). A child process does not have access to its parent
process to do things like change its working directory. So when you
are doing things such as setting environment variables and so forth,
it affects the process that you are current in (the VM process), and
has no effect on the parent (the shell in your terminal window).

HTH,
Dave
     

Reply | Threaded
Open this post in threaded view
|

Re: Small question in OSProcess

Stéphane Ducasse
thanks david for your explanations!

On May 12, 2011, at 11:13 PM, David T. Lewis wrote:

> On Tue, May 10, 2011 at 04:02:02PM +0200, Adrien BARREAU wrote:
>>
>> Hi all,
>>
>> I just have a little question:
>>    Is there a way to change the working directory of my terminal with something in OSProcess?
>>
>> I mean:
>> - I know I can change the working directory of the current process with "OSProcess thisOSProcess chDir: '/'" but of course it does nothing on the terminal
>> - "OSProcess thisOSProcess command: 'cd /'" does absolutly nothing
>>
>> I hope it's clean enough.
>>
>> Regards,
>> Adrien.
>>
>
> The Unix or Windows concept of "current working directory" does not
> really have any meaning in Squeak/Pharo itself. In Unix, which maintains
> a single tree structured view of the file system(s), you may think of
> it as associated with the shell that you are running. In Windows it
> is similar but needs to accommodate the idea of separate volumes
> (C:, D:, etc).
>
> The CommandShell package is a companion to OSProcess that implements
> a simulation of Unix and Windows shell behaviour. Try loading CommandShell
> in addition to OSProcess and I think that you will find what you are
> looking for.
>
> If your question refers to a Unix (Linux, OS X, etc) platform, and you
> are trying to do is change the current working directory for the terminal
> from which you started your Pharo image, then it's a different issue.
> This is basic Unix behavior - the program you are running (the VM) is
> a child process of the program that started it (the shell in your
> terminal window). A child process does not have access to its parent
> process to do things like change its working directory. So when you
> are doing things such as setting environment variables and so forth,
> it affects the process that you are current in (the VM process), and
> has no effect on the parent (the shell in your terminal window).
>
> HTH,
> Dave
>      
>